Eventi e listener
Raffaella Brighi, a.a. 2005/06
Corso di Laboratorio II. A.A. 2005-06
CdL Operatore Informatico Giuridico.
Eventi e listener
„
„
„
„
Un evento è un oggetto che rappresenta il verificarsi
di un’azione dell’utente o del sistema(es click del
mouse o click su un tasto della tastiera oppure
eventi temporizzati ecc.).
La libreria standard di Java contengono delle classi
che rappresentano gli eventi che più spesso occorre
gestire.
Un listener (ascoltatore=ricevitore di eventi) è un
oggetto che riceve una notifica quando si verifica un
evento.
Eventi e listener (ascoltatori) sono elementi
fondamentali per la GUI perché consentono di
intercettare l’interazione con l’utente.
Eventi del mouse
„
„
„
„
„
„
„
mouse
mouse
mouse
mouse
mouse
pressed
released
clicked
entered
exited
mouse moved
mouse dragged
Classe MouseEvent
„
„
„
„
Point getPoint(): restituisce la posizione
dell’evento del mouse
int getX(): restituisce la coord x dell’evento
del mouse
int getY(): restituisce la coord y dell’evento
del mouse
int getClickCount(): restituisce il numero dei
click consecutivi associati all’evento
Oggetti listener
Un listener è un oggetto che aspetta che si
verifichi un evento e quando ciò accade
compie un azione in risposta.
Per gestire un evento occorre:
„
„
1.
2.
creare un oggetto listener per l’evento che
interessa
aggiungere il listener al componente che può
generare l’evento
L’interfaccia Listener
„
„
„
„
Gli oggetti listener sono istanze di classi che
implementano interfacce “listener” della libreria
standard di Java.
La libreria standard di Java contiene una serie di
interfacce per ogni categoria di eventi:
MouseListener, MouseMotionListener, KeyListener,
ActionListener, ecc.
Quando si verifica un evento il metodo l’oggetto che
rappresenta l’evento invoca il metodo opportuno
dell’interfaccia listener.
Perché vengano eseguite istruzioni al verificarsi
dell’evento occorre dunque creare un oggetto
ricevitore che implementa l’interfaccia listener.
Interfaccia ActionListener
public interface ActionListener {
void actionPerformed (ActionEvent
event)
}
Esempio – Eventi di temporizzazione
„
„
La classe Timer (javax.swing) genera una sequenza di eventi ad intervalli di
tempo regolari (eventi di temporizzazione).
Quando accade un evento di temporizzazione la classe Timer richiama il
metodo actionPerformed dell’interfaccia ActionListener. Per gestire l’evento
E di temporizzazione, cioè perché vengano eseguite istruzioni al verificarsi
dell’evento, è necessario definire una classe che implementa l’interfaccia
actionListener e scrivere il codice nel metodo actionPerfomed.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MioRicevitore implements ActionListener{
public MioRicevitore() {
}
public void actionPerformed (ActionEvent event){
// codice da eseguire al verificarsi dell’evento
}
}
„
Il costruttore di Timer prende in input l’intervallo di tempo e l’oggetto
ascoltatore.
„
Codice per creare ed eseguire il timer
ActionListener mylistener = new MioRicevitore();
Timer mytime = new Timer (1000, mylistener);
mytime.start();
La classe MioRicevitore può essere impostata come
classe interna.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
import javax.swing.JOptionPane;
public class tempotest {
public static void main(String[] args) {
// TODO code application logic here
class MioRicevitore implements ActionListener{
public MioRicevitore() {
}
public void actionPerformed (ActionEvent event){
System.out.println ("Tempo!");
}
}
}
}
ActionListener mylistener = new MioRicevitore();
Timer mytime = new Timer (1000, mylistener);
mytime.start();
JOptionPane.showMessageDialog(null, "Quit?");
System.exit (0);
L’interfaccia MouseListener
„
„
„
„
„
void mousePressed (MouseEvent evento): invocato
quando viene premuto il pulsante del mouse
void mouseReleased (MouseEvent evento): invocato
quando il pulsante del mouse viene rilasciato
void mouseClicked (MouseEvent evento): invocato
quando il pulsante del mouse viene premuto e
rilasciato nella stessa posizione
void mouseEntered (MouseEvent evento): invocato
quando il mouse passa sopra ad un componente
grafico
void mouseExited(MouseEvent evento): invocato
quando il mouse esce da un componente grafico