Java gestione eventi
introduzione
La gestione degli eventi
Ci sono 3 oggetti interessati alla g. d. e.:
• L’oggetto interessato (event source)
ad esempio se clicchiamo su una label, sarà la label stessa
• l’evento
ad esempio se clicchiamo su una label, sarà il click del mouse, con le sue
specificità tipo la posizione del mouse, lo stato dei suoi tasti, ecc. In
generale è un oggetto di classe ActionEvent
• il gestore dell’evento (listener)
il gestore sarà un oggetto che implementa l’intefaccia ActionListener ed
avrà un metodo actionPerformed( … ) che riceve come parametro l’evento.
La gestione degli eventi
• Le classi e le interfacce citate si trovano in
java.awt.event.*
• le interfacce sono delle particolari classi
che contengono solo la dichiarazione del
metodo, che deve essere di volta in volta
implementato (override)
• si parla di modello “osservatore”, pattern
Observer in inglese
…in pratica
• costruiamo una classe GestoreEventi
import java.awt.event.*;
class GestoreEvento implements ActionListener {
public void actionPerformed( ActionEvent evento ) {
System.out.println("Hai premuto:" +
evento.getActionCommand());
System.out.println(" when: " + evento.getWhen());
System.out.println(" tasti: " + evento.getModifiers());
System.out.println(" source: " + evento.getSource());
System.out.println(" id: " + evento.getID());
System.out.println(" when:" + evento.paramString());
}
}
…in pratica
• Creiamo una classe che visualizza un
frame con 2 pulsanti
import java.awt.*
class FrameConPulsanti extends Frame {
FrameConPulsanti() {
this.setBounds(20,20, 200, 300);
this.setVisible(true);
Button btn1 = new Button("apri");
Button btn2 = new Button("chiudi");
/* aggiungere qui il gestore dell’evento
*/
this.setLayout(new FlowLayout(FlowLayout.CENTER, 10,10));
this.add(btn1);
this.add(btn2);
}
}
…in pratica
• Aggiungiamo il Listener (l’ascoltatore
dell’evento) subito prima di aggiungere i
pulsanti al form
GestoreEvento gestoreClick = new GestoreEvento();
btn1.addActionListener( gestoreClick );
btn2.addActionListener( gestoreClick );
…in pratica
• infine costruiamo una nuova classe con main per testare
le nostre classi
class ProvaFrameEventi {
public static void main(String[] s ) {
new FrameConPulsanti();
}
}
Compilare ed eseguire
• Dovendo modificare più file insieme,
conviene:
• creare una cartella per il nostro “progetto”
• compilare tutti i sorgenti .java con
javac *.java
• eseguire l’unica classe che ha il main con
java ClasseConMain