Voit lisätä tapahtuman komponenttiin graafisen Java-muokkausohjelman suunnittelunäkymässä tai Java-bean-komponentti-näkymässä.
Kun lisäät tapahtuman, vastakutsumetodi lisätään siihen, jos aiemmin luotu kuuntelutoiminto on käytettävissä. Muussa tapauksessa luodaan uusi kuuntelutoiminto. Aiemmin luodun kuuntelutoiminnon käyttö edellyttää, että se on nimetön sisäinen luokka Java-bean-komponentissa, joka toteuttaa kuuntelutoimintoliittymän. Sillä on oltava tyhjä metodirunko vastakutsumetodia varten tai sen on laajennettuva sovitinluokkaan. Sillä ei saa olla aiemmin luotua metodia lisättävälle tapahtuman vastakutsulle. Jos kyseessä on ominaisuus, aiemmin luotua PropertyChangeListener-metodia käytetään uudelleen, jos se lisätään Java-bean-komponenttiin yhden argumentin metodilla addPropertyChange(PropertyChangeListener listener). Jos ominaisuuden käsittelylle ei ole vielä määritetty koodia, se lisätään.
Jos vastakutsumetodin lisäystä varten ei löydy aiemmin luotua kuuntelutoimintoa, järjestelmä luo uuden kuuntelutoiminnon. Tämä on nimetön sisäinen luokka, ja jos tapahtumalle on määritetty sovitinluokka, kuuntelutoiminto laajentuu siihen. Muussa tapauksessa toiminto toteuttaa kuuntelutoimintoliittymän. Kun tapahtuma on lisätty, järjestelmä luo tukirakennemetodin, jolla on huomautus //TODO. Tukirakennemetodi ilmaisee lähdekoodin, joka ajetaan tapahtuman ilmetessä. Tätä koodia tulee sitten muuttaa siten, että se toteuttaa tarvittavat toimet. //TODO-huomautus näkyy tehtäväikkunassa, ja se ilmaisee puutteelliset metodit. Tämä siksi, että voit paikantaa ne myöhemmin ja poistaa //TODO-huomautuksen, kun vastakutsun logiikka on kirjoitettu.
Edellisessä esimerkissä windowOpened-metodi on jo olemassa. Jos tämä on kuuntelutoiminto, joka laajentuu sovittimeen, samaa kuuntelutoimintoa käytetään uudelleen, koska sillä ei ole vielä windowClosed-metodia. Metodi windowClosed(WindowEvent e) lisätään, ja metodin tukirakenne sekä //TODO-huomautus lisätään seuraavasti:
this.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosed(java.awt.event.WindowEvent e) { System.out.println("windowClosed()"); // TODO Auto-generated stub windowClosed() } public void windowOpened(java.awt.event.WindowEvent e) { callExistingWindowOpenedLogic(); } });
Asiantuntijatilassa tapahtumia voi edelleen lisätä Java-bean-komponenttiin edellä kuvatulla tavalla, mutta niitä voi myös lisätä Java-bean-komponentti-rakenteessa olevaan kuuntelutoimintoon. Kaikki kuuntelutoiminnon vastakutsumetodit ovat näkyvissä Tapahtumat-valikossa, ja kaikki jo käytetyt metodit ovat poissa käytöstä.
Jos kyseessä on PropertyChangeListener-metodi, ponnahdusvalikossa näkyvät kaikki Java-bean-komponenttiin sidotut ominaisuudet. Jos ominaisuus on jo PropertyChangeListener-metodin käytössä, sitä ei voi enää käyttää.
Yhden argumentin metodilla lisätyllä kuuntelutoiminnolla on if-lause, joka tarkistaa ominaisuuden nimen, ennen kuin se käsittelee kunkin ominaisuuden vastakutsun logiikan seuraavan koodin mukaisesti:
javaBean.addPropertyChangeListener(new java.beans.PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent e) { if ((e.getPropertyName().equals("font"))) { System.out.println("propertyChange(font)"); } } });
Tällä koodilla yhdellä argumentilla lisättyä PropertyChangeListener-metodia voi käyttää useissa ominaisuuksissa (käyttämällä useita if{}-lohkoja), ja kun lisäät seuraavan ominaisuuden vastakutsun, myös uusia if{}-lohkoja lisätään.
Jos propertyChangeListener-metodi lisätään Java-bean-komponenttiin kahden argumentin metodilla addPropertyChangeListener(String propertyName, PropertyChangeListener listener), metodi on ominaisuuskohtainen eikä sitä voi käyttää uudelleen jossakin toisessa ominaisuudessa. Tässä tapauksessa kaikki Tapahtumat-laajennusvalikon alitapahtumat ovat poissa käytöstä.