La gestione degli eventi nelle interfacce grafiche

Gestire gli eventi con la classe ActionListener

Per poter fare accadere un qualcosa alla pressione di un bottone dobbiamo costruire un oggetto che con il compito di reagire all’evento, ad esempio “pressione del bottone”. Poi, registreremo quest’oggetto all’insieme di eventi di cui è interessato ricevere informazioni.

Quest’interfaccia serve a creare generici ascoltatori di eventi. In particolare il metodo actionPerformed viene chiamato automaticamente quando si genera un evento di interesse. Per segnalare che un oggetto ascoltatore listener intende ricevere gli eventi generati da un determinato oggetto grafico, dovremo registrarli con il metodo addActionListener. Ogni listener dovrà implementare (versione grezza non parametrica):

  public interface ActionListener {
    void actionPerformed(ActionEvent e);
  }

Un modo per implementare un ascoltatore è attraverso una classe locale che implementa l’interfaccia ActionListener. Un modo alternativo consiste nel rendere le classi anonime, avremo in questo modo una classe anonima per ogni listener… una possibile soluzione che aggira il problema è quella di utilizzare un metodo di supporto che crea su richiesta classi anonime. Si tratta di un ottimo modo per supplire alla mancanza di costruttori nelle classi anonime. In questo modo non avremo più classi interne disponibili solo in quel punto ma ovunque.

Il metodo actionPerformed per gestire gli eventi in Java

Dato il seguente codice:

  // ...

  // Credo due bottoni
  final JButton b1 = new JButton("Bottone 1");

  // Inserisco gli elementi nella finestra
  frame.add(b1);

  // Creo l'evento che cambia il testo
  class Evento implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent event) {
      b1.setText("Cliccato!") ;
    }
  }

  // Imposto l'evento al bottone
  b1.addActionListener(new Evento());

  // ...

Eseguendo il codice avremo:

La gestione degli Eventi nelle Interfacce grafiche

…e cliccando sul bottone si attiverà il listener impostato:

La gestione degli Eventi nelle Interfacce grafiche

In questo modo l’applicazione risponde alla pressione del pulsante: utilizziamo la classe locale Evento per realizzare gli oggetti ascoltatori necessari. Essendo una classe locale non è visibile al di fuori del metodo main. La classe Evento può accedere alla variabile locale b1 solo perché è stata dichiarata final.

Il metodo addActionListener consente di registrare un ascoltatore interessato alla pressione del bottone. Per far ciò effettuiamo l’overriding del metodo actionPerformed che verrà attivato dall’evento “pressione del pulsante”. Quando il pulsante verrà cliccato il testo del bottone cambierà.

Ecco l’indice della pagina con la lista completa di tutti i design pattern fate riferimento a questa pagina.

Pubblicato in Interfacce grafiche, Programmazione Taggato con: , , , , , , , , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*