Panoramica sugli eventi swing

Per gestire gli eventi generati da un componente occorre conoscere: 1. il tipo di evento, che verrà passato come parametro ai metodi dell'interfaccia ridefiniti nella classe gestore dell'evento; 2. l'interfaccia implementata dalla classe che gestisce l'evento, o analogamente la classe adapter estesa1; 3. i metodi dell'interfaccia che devono essere ridefiniti all'interno del rilevatore dell'evento; 4. il metodo add che permette di registrare il rilevatore di evento presso l'oggetto origine dell'evento stesso; esso ha come parametro un'istanza della classe rilevatore di evento.

Esempio
Consideriamo l'evento generato da un pulsante JButton quando l'utente vi fa clic sopra con il mouse. 1. Il tipo di evento è ActionEvent. Esso verrà passato come parametro al metodo actionPerformed. 2. L'interfaccia implementata dalla classe che gestisce l'evento è ActionListener. 3. L'interfaccia contiene un unico metodo da ridefinire: il metodo actionPerformed. 4. Il metodo utilizzato per registrare il rilevatore presso il pulsante è addActionListener. Riassumendo: ActionEvent ActionListener void actionPerformed(ActionEvent e) addActionListener

TIPO EVENTO INTERFACCIA METODI DELL'INTERFACCIA METODO ADD

In generale: • il tipo di evento è TipoeventoEvent; • l'interfaccia è TipoeventoListener; • il metodo add è addTipoeventoListener Gli eventi di azione (Action) sono molto comuni e vengono generati dall’utente, per esempio premendo un pulsante o premendo il tasto invio dopo aver inserito del testo in una casella di testo; tuttavia, non sono gli unici. Nel seguito saranno presentate brevemente alcune altre tipologie di eventi. Un elenco completo è reperibile all’url http://download.oracle.com/javase/tutorial/uiswing/events/api.html.

1

Una classe adapter estende una interfaccia e ne implementa tutti i metodi, senza però far compiere ad essi qualcosa di utile. Invece di implementare una interfaccia e fornire il codice per tutti i metodi, conviene estendere la corrispondente classe adapter e ridefinire solo i metodi che servono effettivamente.

1
Bocchi Cinzia ultimo aggiornamento: 06/11/2011

Metodi utili della classe ActionEvent public Object getSource() Restituisce il riferimento al componente che ha generato l'evento. public String getActionCommand() Restituisce il comando associato all'evento azione. Se l'evento azione ha avuto origine da un pulsante, la stringa di comando equivale all'etichetta del pulsante.

Eventi Caret
Gli eventi caret si verificano quando il cursore che indica il punto di inserimento in un componente di testo (caret) si sposta o quando, per esempio, si inserisce o rimuove testo. Gli eventi caret sono generati da componenti che sono sottoclassi di JTextComponent. CaretEvent CaretListener void caretUpdate(CaretEvent e) addCaretListener

TIPO EVENTO INTERFACCIA METODI DELL'INTERFACCIA METODO ADD

• void caretUpdate(CaretEvent e)

Chiamato quando la posizione del cursore si modifica. Metodi utili della classe CaretEvent public Object getSource() Restituisce l’oggetto su cui si è verificato l’evento. Ereditato da EventObject.

Eventi Change
Gli eventi change si verificano quando un componente subisce una modifica. L’evento non notifica che cosa è cambiato ma solo che si è verificato un cambiamento ChangeEvent ChangeListener void stateChanged(ChangeEvent e) addChangeListener

TIPO EVENTO INTERFACCIA METODI DELL'INTERFACCIA METODO ADD

• void stateChanged(ChangeEvent e)

Invocato quando la sorgente dell’evento cambia il suo stato.

2
Bocchi Cinzia ultimo aggiornamento: 06/11/2011

Metodi utili della classe ChangeEvent public Object getSource() Restituisce l’oggetto su cui si è verificato l’evento. Ereditato da EventObject.

Eventi Item
Gli eventi item sono generati da componenti che implementano l’interfaccia ItemSelectable, come pulsanti, caselle di controllo e caselle combinate. ItemEvent ItemListener void itemStateChanged(ItemEvent e) addItemListener

TIPO EVENTO INTERFACCIA METODI DELL'INTERFACCIA METODO ADD

• void itemStateChanged(ItemEvent e)

Invocato quando cambia lo stato del componente. Metodi utili della classe ItemEvent public Object getItem() Restituisce il componente che ha generato l’evento. public int getStateChange() Restituisce un intero che rappresenta lo stato del componente (SELECTED o DESELECTED).

Eventi Window
Gli eventi Window si verificano quando si agisce su una finestra (un frame o una finestra di dialogo), per esempio aprendola, chiudendola, riducendola a icona e così via. I gestori di eventi sulle finestre sono tre: WindowListener, WindowFocusListener e WindowStateListener. L’interfaccia WindowListener è comunemente usata per specificare il comportamento di una finestra all’atto della sua chiusura. Per esempio, prima di chiudere la finestra potrebbe essere utile salvare i dati o intraprendere altre azioni. L’interfaccia WindowFocusListener contiene metodi che rilevano quando una finestra ottiene il focus o lo perde. L’interfaccia WindowStateListener ha un solo metodo per rilevare le modifiche allo stato della finestra, come quando la finestra viene ridotta a icona o massimizzata e così via.

3
Bocchi Cinzia ultimo aggiornamento: 06/11/2011

Quando si desidera rilevare solo le modifiche allo stato di una finestra, conviene utilizzare WindowStateListener al posto di WindowListener per due motivi: ha solo un metodo da implementare e fornisce supporto per la massimizzazione. Inoltre, WindowsListener non è necessaria neanche per gestire gli eventi di chiusura di una finestra poiché allo scopo è sufficiente utilizzare il metodo setDefaultCloseOperation. WindowListener è usata comunemente per fermare un thread (es., un’animazione), rilasciando le risorse impegnate, quando una finestra viene ridotta a icona, oppure per far ripartire il thread quando la finestra viene nuovamente aperta. WindowListener
TIPO EVENTO INTERFACCIA METODI DELL'INTERFACCIA

METODO ADD

WindowEvent WindowListener void windowActivated(WindowEvent e) void windowClosed(WindowEvent e) void windowClosing(WindowEvent e) void windowDeactivated(WindowEvent e) void windowDeiconified(WindowEvent e) void windowIconified(WindowEvent e) void windowOpened(WindowEvent e) addWindowListener

• void windowActivated(WindowEvent e) • void windowClosed(WindowEvent e)

Invocato quando una finestra diventa la finestra attiva. Invocato quando una finestra è stata chiusa (dispose).

• void windowClosing(WindowEvent e)

Invocato quando si chiude una finestra utilizzando il menu di sistema.

• void windowDeactivated(WindowEvent e) • void windowDeiconified(WindowEvent e) • void windowIconified(WindowEvent e) • void windowOpened(WindowEvent e)

Invocato quando una finestra non è più la finestra attiva. Invocato quando una finestra passa dallo stato iconizzato a quello normale. Invocato quando una finestra passa dallo stato normale a quello iconizzato. Invocato quando una finestra viene resa visibile per la prima volta. Al posto dell’interfaccia WindowListener si può utilizzare WindowAdapter, per evitare di implementare tutti i metodi. Metodi utili della classe WindowEvent public Window getWindow() la classe adapter

4
Bocchi Cinzia ultimo aggiornamento: 06/11/2011

Restituisce l’oggetto che ha generato l’evento.

WindowStateListener
TIPO EVENTO INTERFACCIA METODI DELL'INTERFACCIA METODO ADD

WindowStateEvent WindowStateListener void windowGainedFocus(WindowEvent e) void windowLostFocus(WindowEvent e) addWindowStateListener

• void windowGainedFocus(WindowEvent e)

Invocato quando la finestra ottiene il focus, il che significa che la finestra o un suo sotto-componente, può ricevere eventi da tastiera.

• void windowLostFocus(WindowEvent e)
Invocato quando la finestra perde il focus.

WindowFocusListener
TIPO EVENTO INTERFACCIA METODI DELL'INTERFACCIA METODO ADD

WindowFocusEvent WindowFocusListener void windowStateChanged(WindowEvent e) addWindowFocusListener

• void windowStateChanged(WindowEvent e)

Invocato quando lo stato di una finestra subisce modifiche.

Quest'opera è stata rilasciata con licenza Creative Commons Attribution-ShareAlike 3.0 Unported. Per leggere una copia della licenza visita il sito web http://creativecommons.org/licenses/by-sa/3.0/ o spedisci una lettera a Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

5
Bocchi Cinzia ultimo aggiornamento: 06/11/2011

Sign up to vote on this title
UsefulNot useful