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