NOTA! Questo sito utilizza i cookie e tecnologie simili.

Se non si modificano le impostazioni del browser, l'utente accetta. Per saperne di piu'

Approvo

Guida Java 2D - Capitolo 41: La gestione degli eventi (seconda parte, pratica): eventi per i pulsanti JButton.

 

Per gestire l'evento di click su di un pulsante JButton occorre, dopo aver creato il pulsante ed averlo inserito in un pannello, creare una classe (o utilizzare proprio quella del pannello che contiene il JButton) che implementi l'interfaccia ActionListener.

 

ActionListener è, come suggerisce il nome, un listener degli eventi, utilizzabile per intercettare le azioni compiute sui JButton.

 

 

 

Tale interfaccia richiede l'implementazione del metodo:

actionPerformed(ActionEvent e)   :   void

nel cui corpo andranno gestiti il riconoscimento del pulsante che ha generato l'evento (è possibile associare più JButton ad un ActionListener) e le azioni da intraprendere nei vari casi.

 

La classe ActionEvent identifica un evento intercettabile dal listener ActionListener.

 

Metodi particolarmente utili di tale classe sono, ad esempio, i seguenti:

getActionCommand()   :   String Restituisce, sotto forma di stringa, il nome del comando che ha generato l'evento.
getModifiers()   :   int Se sono stati premuti dei 'modificatori', ne restituisce i codici (identificati mediante costanti intere predefinite, proprie di ActionEvent).
getSource()   :   Object Metodo ereditato da EventObject che restituisce l'istanza dell'oggetto che ha generato l'evento.

 

Per maggiori dettagli su tale classe si rimanda alle API ufficiali.

 

NOTA: per implementare l'interfaccia ActionListener è necessario effettuare l'import di java.awt.event.* .

 

Definito il listener, occorrerà 'registrare' i pulsanti JButton da gestire con tale strumento mediante il metodo (ereditato da AbstractButton e, quindi, comune a molti altri oggetti GUI Swing):

addActionListener(ActionListener al)   :   void

 

La porzione di codice che segue definisce una classe eseguibile che, una volta avviata, mostrerà a video un JFrame con due JPanel: il primo pannello conterrà due pulsanti cliccabili, mentre il secondo mostrerà a video una JLabel il cui contenuto (una scritta) cambierà quando l'utente cliccherà sui pulsanti.

 

Ecco il codice:

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;


public class ProvaActionListener1 extends JFrame implements ActionListener
{
private JPanel pannello1, pannello2;
private JButton bottone1, bottone2;
private JLabel etichetta1;


public ProvaActionListener1()
{
this.setTitle("Esempio eventi associati ai pulsanti");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Toolkit mioToolkit = Toolkit.getDefaultToolkit();
Dimension dimensioniSchermo = mioToolkit.getScreenSize();

int larghezzaFrame, altezzaFrame;
larghezzaFrame = (int) (dimensioniSchermo.getWidth()/2);
altezzaFrame = (int) (dimensioniSchermo.getHeight()/2);

this.setSize(larghezzaFrame, altezzaFrame);

// NOTA IMPORTANTE: l'origine del sistema di riferimento dello schermo (punto (0,0)) è situata IN ALTO A SINISTRA; valori y positivi 'scendendo', x positivi proseguendo 'verso destra'.
this.setLocation(((int)dimensioniSchermo.getWidth()/4), ((int)dimensioniSchermo.getHeight()/4));


this.getContentPane().setLayout(new BorderLayout());
pannello1 = new JPanel();
pannello2 = new JPanel();

bottone1 = new JButton("Pulsante 1");
bottone2 = new JButton("Pulsante 2");
bottone1.addActionListener(this);
bottone2.addActionListener(this);

etichetta1 = new JLabel("Premi uno dei due pulsanti...");

pannello1.add(bottone1);
pannello1.add(bottone2);

pannello2.add(etichetta1);

this.getContentPane().add(pannello1, BorderLayout.CENTER);
this.getContentPane().add(pannello2, BorderLayout.SOUTH);
}


public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand() == "Pulsante 1") etichetta1.setText("Hai premuto il primo pulsante");
else if(e.getActionCommand() == "Pulsante 2") etichetta1.setText("Hai premuto il secondo pulsante");
}


public static void main(String[] args)
{
ProvaActionListener1 pal1 = new ProvaActionListener1();
pal1.setVisible(true);
}
}

 

 
Vai all'inizio della pagina