Událost můžete přidat ke komponentě v pohledu Design či Java Beans v rámci vizuálního editoru pro prostředí Java.
Když přidáte událost, pokud je k dispozici použitelný stávající listener, přidá se metoda zpětného volání. Jinak je vytvořen nový listener. Aby mohl být použit stávající listener, musí to být anonymní vnitřní třída na objektu JavaBean, která implementuje rozhraní listeneru. Musí mít prázdné tělo metody pro metodu zpětného volání, nebo musí rozšířit třídu adaptéru. A nemít přidanou žádnou stávající metodu pro zpětné volání události. V případě vlastnosti bude stávající PropertyChangeListener znovu použit, pokud je přidán k objektu JavaBean metodou s jedním argumentem addPropertyChange(PropertyChangeListener listener). Pokud dosud nemá kód, bude přidáno zpracování vlastnosti.
Pokud není žádný kandidát na stávající listener, na který by mohla být přidána metoda zpětného volání, bude vytvořen nový listener. Bude to anonymní vnitřní třída, a pokud byla definována třída adaptéru pro tuto událost, pak ji listener rozšíří. Jinak bude implementovat rozhraní listeneru. Jakmile je událost přidána, vytvoří se kmenová metoda s komentářem //TODO. Kmenová metoda je indikátorem zdrojového kódu, který bude vykonán při výskytu události, a vy byste potom toto měli změnit tak, aby se projevilo vámi požadované chování. Komentář //TODO je zobrazen v okně Úlohy, a označuje tak nekompletní metody. Je tomu tak proto, abyste je mohli později vyhledat a komentář //TODO odebrat, až bude logika zpětného volání napsána.
V předchozím příkladě metoda windowOpened již existuje. Pokud je toto listener, který rozšiřuje adaptér, bude stejný listener znovu použit, protože již nemá metodu windowClosed. MetodawindowClosed(WindowEvent e) je přidána a doplněn kmen metody a komentář //TODO, jak je ukázáno zde:
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();
}
});
V režimu pro odborníky je možné přidávat události do objektu JavaBean tak, jak bylo ukázáno výše, ale mohou být také přidávány k listeneru ve stromě objektů Java Bean. Nabídka Události zobrazuje všechny metody zpětného volání události na listeneru, přičemž ty, které jsou již použity, jsou znepřístupněny.
V případě listeneru PropertyChangeListener zobrazuje rozevírací nabídka všechny vlastnosti vázané na objekt JavaBean. Pokud jsou některé již použity v listeneru PropertyChangeListener, budou znepřístupněny.
Listener přidaný metodou s jedním argumentem má příkaz "if", který kontroluje název vlastnosti před zpracováním logiky pro každé zpětné volání vlastnosti, jak je ukázáno v následujícím kódu:
javaBean.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent e) {
if ((e.getPropertyName().equals("font"))) {
System.out.println("propertyChange(font)");
}
}
});
Tím se umožní, aby listener PropertyChangeListener přidaný metodou s jedním argumentem mohl být používán pro více než jednu vlastnost (tím, že se použije více bloků if{}), a když je přidáno druhé a další zpětné volání vlastnosti, přidají se nové bloky if{}.
Pokud je listener propertyChangeListener přidán k objektu JavaBean pomocí metody se dvěma argumenty addPropertyChangeListener(String propertyName, PropertyChangeListener listener), je specifický pro konkrétní vlastnost, takže nemůže být znovu použit pro jinou vlastnost. V tomto případě jsou znepřístupněny všechny podřízené prvky kaskádové nabídky Události.