U kunt een event aan een component toevoegen in de view Ontwerp of de view Java-beans van de Visual Editor.
Wanneer u een event toevoegt en als een bestaande listener kan worden gebruikt, wordt de reagerende methode er aan toegevoegd. Anders wordt een nieuwe listener gemaakt. Om een bestaande listener te gebruiken, moet deze een anonieme binnenklasse zijn van de Java-bean waarmee de listenerinterface wordt geïmplementeerd. De listener moet een leeg corpus voor de reagerende methode hebben, of fungeren als uitbreiding voor de adapterklasse. Bovendien mag er geen bestaande methode zijn voor de event-callback die wordt toegevoegd. Voor een eigenschap wordt een bestaande PropertyChangeListener opnieuw gebruikt als deze wordt toegevoegd aan de Java-bean via de methode met één argument: addPropertyChange(PropertyChangeListener listener). Als deze nog geen code bevat, wordt de nodige verwerkingscode aan de eigenschap toegevoegd.
Als er geen bestaande listener beschikbaar is waaraan de reagerende methode kan worden toegevoegd, wordt een nieuwe listener gemaakt. De listener wordt dan een anonieme binnenklasse, en als er een adapterklasse voor de event is gedefinieerd, wordt de listener een uitbreiding hiervan. In alle andere gevallen wordt de listenerinterface geïmplementeerd. Nadat de event is toegevoegd wordt een stubmethode met //TODO-commentaar (TODO = actiepunt) gemaakt. De stubmethode is een indicator van de broncode die wordt uitgevoerd wanneer de event zich voordoet. U dient deze te wijzigen om het door u gewenste gedrag te verkrijgen. Het //TODO-commentaar wordt weergegeven in het venster Taken. Onvolledige methoden worden gemarkeerd zodat u deze later kunt terugvinden en het //TODO-commentaar weer kunt verwijderen nadat de callback-logica geschreven is.
In het vorige voorbeeld zag u dat de methode windowOpened al bestaat. Als dit een listener is die fungeert als uitbreiding voor de adapter, wordt dezelfde listener opnieuw gebruikt omdat deze nog geen methode windowClosed bevat. De methode windowClosed(WindowEvent e) wordt toegevoegd en de methodestub en het //TODO-commentaar worden toegevoegd zoals in het onderstaande voorbeeld:
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(); } });
In de expertmodus kunnen events nog steeds aan de Java-bean worden toegevoegd volgens de eerder beschreven methode, maar ze kunnen ook worden toegevoegd aan een listener in de structuur met Java-beans. In het menu Events worden alle reagerende methoden voor events van de listener afgebeeld, alsmede alle events die al gebruikt of uitgeschakeld zijn.
Voor een PropertyChangeListener worden in het voorgrondmenu alle bijbehorende eigenschappen van de Java-bean afgebeeld. De eigenschappen die al door de PropertyChangeListener worden gebruikt, zijn gedeactiveerd.
Een listener die wordt toegevoegd met behulp van de methode met één argument, bevat een if-instructie waarmee de naam van de eigenschap wordt gecontroleerd voordat de logica voor elke reagerende methode wordt uitgevoerd, zoals u kunt zien in het volgende voorbeeld:
javaBean.addPropertyChangeListener(new java.beans.PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent e) { if ((e.getPropertyName().equals("font"))) { System.out.println("propertyChange(font)"); } } });
Hiermee wordt een PropertyChangeListener toegevoegd, waarbij een methode met één argument wordt gebruikt voor meer dan een eigenschap (door meerdere if{}-blokken te gebruiken). Bij het toevoegen van de tweede en daaropvolgende reagerende methoden worden nieuwe if{}-blokken toegevoegd.
Als de propertyChangeListener wordt toegevoegd aan de Java-bean met behulp van de methode met twee argumenten, addPropertyChangeListener(String propertyName, PropertyChangeListener listener), geldt deze specifiek voor een bepaalde eigenschap en kan deze niet nogmaals worden gebruikt voor een andere eigenschap. In dat geval worden alle lagere menuopties van het vervolgmenu Events gedeactiveerd.