Du kan legge til en hendelse i en komponent i Design-visningen eller visningen Java-bønner i det visuelle redigeringsprogrammet for Java.
Når du legger til en hendelse, og det er en eksisterende lytter som kan brukes, blir tilbakekallmetoden lagt til den. Hvis ikke, blir det opprettet en ny lytter. Hvis en eksisterende lytter skal brukes, må den være en anonym indre klasse i JavaBean som implementerer lyttergrensesnittet. Den må ha en tom metodehoveddel for tilbakekallmetoden, eller utvide adapterklassen, og ikke ha en eksisterende metode for hendelsestilbakekallet som blir lagt til. En eksisterende PropertyChangeListener blir brukt på nytt for en egenskap hvis den blir lagt til i JavaBean med en metode med ett enkelt argument addPropertyChange(PropertyChangeListener listener). Hvis den ikke allerede har kode, blir behandling av egenskapen lagt til.
Hvis det ikke finnes en lytterkandidat som tilbakekallmetoden kan legges til, blir det opprettet en ny lytter. Dette vil være en anonym indre klasse, og hvis det er definert en adapterklasse for hendelsen, vil lytteren utvide den. Hvis ikke, vil den implementere lyttergrensesnittet. Når hendelsen er lagt til, blir det lagt til en metodestubb med en //TODO-kommentar. Denne metodestubben viser kildekoden som vil bli utført når hendelsen forekommer, og du bør endre denne for å få den ønskede virkemåten. Kommentaren //TODO blir vist i Oppgaver-vinduet og flagger ufullstendige metoder. Dermed kan du finne dem senere og fjerne //TODO-kommentaren når logikken for tilbakekall er skrevet.
I det forrige eksempelet finnes windowOpened-metoden allerede. Hvis dette er en lytter som utvider adapteren, blir den samme lytteren brukt på nytt, for den har ikke allerede en windowClosed-metode. Metoden windowClosed(WindowEvent e) blir lagt til, og metodestubben og //TODO-kommentaren blir lagt til som vist her:
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(); } });
I ekspertmodus kan hendelser likevel legges til i JavaBean som vist tidligere, men de kan også bli lagt til i en lytter i treet Java-bønner. Hendelser-menyen viser alle tilbakekallmetodene for hendelser på lytteren, og alle som allerede er i bruk, er deaktivert.
For en PropertyChangeListener viser hurtigmenyen alle egenskapene som er bundet, i JavaBean. Hvis det er noen som allerede er brukt av PropertyChangeListener, blir de deaktivert.
En lytter som blir lagt til med en metode med ett enkelt argument, har en if-setning som kontrollerer navnet på egenskapen før den behandler logikken for hvert egenskapstilbakekall, som vist i følgende kode:
javaBean.addPropertyChangeListener(new java.beans.PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent e) { if ((e.getPropertyName().equals("font"))) { System.out.println("propertyChange(font)"); } } });
Dette gjør at en PropertyChangeListener som blir lagt til med en metode med ett enkelt argument, kan brukes for flere egenskaper (ved at flere if{}-blokker brukes), og når det andre og etterfølgende egenskapstilbakekallet blir lagt til, blir en ny if{}-blokk lagt til.
Hvis propertyChangeListener blir lagt til JavaBean med metoden med to argumenter addPropertyChangeListener(String propertyName, PropertyChangeListener listener), er den spesifikk for en bestemt egenskap og kan ikke brukes om igjen for en annen egenskap. I dette tilfellet blir alle underordnede på Hendelser-kaskademenyen deaktivert.