Sei sulla pagina 1di 5

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 estesa 1 ;

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:

TIPO EVENTO

ActionEvent

INTERFACCIA

ActionListener

METODI DELL'INTERFACCIA

void actionPerformed(ActionEvent e)

METODO ADD

addActionListener

In generale:

il tipo di evento è Tipoevento Event;

l'interfaccia è Tipoevento Listener;

il metodo add è add Tipoevento Listener

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.

Bocchi Cinzia ultimo aggiornamento: 06/11/2011

1

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.

TIPO EVENTO

CaretEvent

INTERFACCIA

CaretListener

METODI DELL'INTERFACCIA

void caretUpdate(CaretEvent e)

METODO ADD

addCaretListener

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

TIPO EVENTO

ChangeEvent

INTERFACCIA

ChangeListener

METODI DELL'INTERFACCIA

void stateChanged(ChangeEvent e)

METODO ADD

addChangeListener

void stateChanged(ChangeEvent e)

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

Bocchi Cinzia ultimo aggiornamento: 06/11/2011

2

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.

TIPO EVENTO

ItemEvent

INTERFACCIA

ItemListener

METODI DELL'INTERFACCIA

void itemStateChanged(ItemEvent e)

METODO ADD

addItemListener

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.

Bocchi Cinzia ultimo aggiornamento: 06/11/2011

3

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

WindowEvent

INTERFACCIA

WindowListener

METODI DELL'INTERFACCIA

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)

METODO ADD

addWindowListener

void windowActivated(WindowEvent e)

Invocato quando una finestra diventa la finestra attiva.

void windowClosed(WindowEvent e)

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)

Invocato quando una finestra non è più la finestra attiva.

void windowDeiconified(WindowEvent e)

Invocato quando una finestra passa dallo stato iconizzato a quello normale.

void windowIconified(WindowEvent e)

Invocato quando una finestra passa dallo stato normale a quello iconizzato.

void windowOpened(WindowEvent e)

Invocato quando una finestra viene resa visibile per la prima volta.

Al posto dell’interfaccia WindowListener si può utilizzare la classe adapter WindowAdapter, per evitare di implementare tutti i metodi.

Metodi utili della classe WindowEvent

public Window getWindow()

Bocchi Cinzia ultimo aggiornamento: 06/11/2011

4

Restituisce l’oggetto che ha generato l’evento.

WindowStateListener

TIPO EVENTO

WindowStateEvent

INTERFACCIA

WindowStateListener

METODI DELL'INTERFACCIA

void windowGainedFocus(WindowEvent e) void windowLostFocus(WindowEvent e)

METODO ADD

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

WindowFocusEvent

INTERFACCIA

WindowFocusListener

METODI DELL'INTERFACCIA

void windowStateChanged(WindowEvent e)

METODO ADD

addWindowFocusListener

void windowStateChanged(WindowEvent e)

Invocato quando lo stato di una finestra subisce modifiche.