E' possibile aggiungere un evento a un componente nella vista Progettazione o nella vista Bean Java.
Un listener aggiunto attraverso il metodo con i due argomenti è specifico di una particolare proprietà, pertanto non può essere riutilizzato per un'altra proprietà. Un listener aggiunto attraverso un metodo con un solo argomento dispone di un'istruzione if con la quale viene verificato il nome della proprietà prima di elaborare la logica per ogni callback di proprietà, come illustrato nel codice seguente:
javaBean.addPropertyChangeListener(new java.beans.PropertyChangeListener() { Â Â Â public void propertyChange(java.beans.PropertyChangeEvent e) { Â Â Â Â Â Â Â if ((e.getPropertyName().equals("font"))) { Â Â Â Â Â Â Â Â Â Â Â System.out.println("propertyChange(font)");Â Â Â Â Â Â Â } Â Â Â } });
In questo modo, un listener PropertyChangeListener aggiunto attraverso un metodo con un unico argomento può essere utilizzato per più di una proprietà ( grazie a più blocchi if{} ).Â
Quando si aggiunge un evento ed è possibile utilizzare un listener esistente, ad esso verrà aggiunto il metodo di callback. Diversamente, verrà creato un nuovo listener. Per poter utilizzare un listener esistente, una classe anonima interna nel JavaBean deve implementare l'interfaccia listener, deve avere un corpo di metodo vuoto per il metodo di callback oppure deve estendere la classe di adattori. Inoltre non deve avere alcun metodo esistente da aggiungere per il callback degli eventi. Nel caso di una proprietà, verrà riutilizzato un listener PropertyChangeListener esistente se viene aggiunto al JavaBean attraverso il metodo con un unico argomento addPropertyChange(PropertyChangeListener listener). Se non dispone già di codice, verrà aggiunta l'elaborazione della proprietà.
Se non è disponibile alcun listener esistente idoneo al quale è possibile aggiungere il metodo di callback, verrà creato un nuovo listener. Questo sarà una classe anonima interna, che verrà estesa dal listener se è stata definita una classe di adattatori per l'evento. In caso contrario, verrà implementata l'interfaccia listener. Una volta aggiunto l'evento, viene creato un metodo di stub con un commento //TODO. Il metodo di stub è un indicatore del codice di origine che verrà eseguito al verificarsi dell'evento; per ottenere il funzionamento richiesto, occorre modificare questo metodo. Il commento //TODO viene visualizzato nella finestra Attività e indica i metodi incompleti. In questo modo, è possibile individuarli successivamente e rimuovere il commento //TODO una volta creata la logica di callback.
Nell'esempio precedente, il metodo windowOpened esiste già. Se si tratta di un listener che estende l'adattatore, verrà riutilizzato lo stesso listener perché non dispone già di un metodo windowClosed. Viene aggiunto il metodo windowClosed(WindowEvent e), lo stub del metodo e il commento //TODO, come illustrato di seguito:
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 modalità esperto, gli eventi possono essere aggiunti al JavaBean come illustrato precedentemente, ma possono anche essere aggiunti a un listener nella struttura ad albero Bean Java. Nel menu Eventi sono elencati tutti i metodi di callback degli eventi in un listener e tutti quelli già utilizzati risultano disabilitati.
Nel caso di un listener PropertyChangeListener, nel menu a comparsa sono elencate tutte le proprietà associate nel JavaBean. Tutte quelle che sono già utilizzate da PropertyChangeListener verranno disabilitate.
Un listener aggiunto attraverso un metodo con un unico argomento dispone di un'istruzione if che consente di verificare il nome della proprietà prima di elaborare la logica di callback di ogni proprietà, come illustrato nel codice seguente:
javaBean.addPropertyChangeListener(new java.beans.PropertyChangeListener() { Â Â Â public void propertyChange(java.beans.PropertyChangeEvent e) { Â Â Â Â Â Â Â if ((e.getPropertyName().equals("font"))) { Â Â Â Â Â Â Â Â Â Â Â System.out.println("propertyChange(font)");Â Â Â Â Â Â Â } Â Â Â } });
In questo modo, un listener PropertyChangeListener aggiunto attraverso il metodo con un unico argomento potrà essere utilizzato per più di una proprietà ( grazie a più blocchi if{} ) e quando verrà aggiunto un secondo callback di proprietà, verrà aggiunto anche un nuovo blocco if{}.
Se il listener propertyChangeListener viene aggiunto al JavaBean attraverso il metodo con due argomenti addPropertyChangeListener(String propertyName, PropertyChangeListener listener), risulterà specifico di una particolare proprietà e non potrà essere riutilizzato per un'altra proprietà. In questo caso, verranno disabilitate tuttte le voci secondarie del menu a discesa Eventi.
Argomento principale: Gestione di eventi con l'editor visuale
Argomenti correlati
Vista Bean Java
Attività correlate
Eliminazione di eventi da un componente
Visualizzazione di eventi per un componente
Visualizzazione del codice di origine di un evento