Utilizzare un JButton in Java Swing

Il button o pulsante grafico è sicuramente tra i controlli più utilizzati nelle interfaccie grafiche dove riveste un ruolo importante nel processo di iterazione con l'utente. In java questo controllo grafico è implementato dalla classe javax.swing.JButton. Questa classe rappresenta una realizzazione semplice dell' AbstractButton, in quanto altri controlli grafici appartengono a questa categoria come JMenuItem oppure JCheckBox che ereditano la stessa classe.

Un JButton può visualizzare al suo interno, un testo oppure un'immagine, infatti implementa diversi tipi di costruttori. Vediamone una semplice realizzazione creando un contesto dove includere il JButton composto da un JFrame (container) con un JPanel:
import javax.swing.JButton;
...
JButton button = new JButton("Click");
...
JFrame frame = new JFrame("JButton Demo");
JPanel panel = new JPanel();

panel.add(button);
frame.getContentPane().add(panel);
frame.pack();
frame.setVisbile(true);

Esempio JButton Text

In questo caso abbiamo utilizzato il costruttore che specifica il testo da visualizzare. Mentre se vogliamo visualizzare un'immagine (GIF, JPEG o PNG) si utilizza la classe javax.swing.ImageIcon tramite il costruttore JButton(ImageIcon icon):
...
String path="...";
ImageIcon icon = new ImageIcon(path);
JButton button = new JButton(icon);
...

Esempio JButton Text

La stringa path deve contenere un percorso valido di un'immagine oppure è possibile specificare anche una risorsa URL. Altre funzioni interessanti dal punto di vista grafico sono:
  • setBackground(Color c) e setForeground(Color c): cambiare rispettivamente il colore di sfondo e del testo
  • setFont(Font f):cambiare il font del testo
  • setTooltipText(String text):associare un testo al tooltip, cioè quel testo che viene visualizzato quando ci si sofferma con il puntatore del mouse su un oggetto grafico
  • setEnabled(boolean flag): abilita (true) o disabilita (false) il pulsante
Tutti questo metodi vengono ereditati dal JComponent quindi sono comuni con tanti altri controlli grafici definiti in Java Swing.

Gestire le azioni

Gli esempi che abbiamo visto implementano un pulsante che in questo caso è passivo cioè non svolge nessuna funzione. Adesso vediamo come associare un'azione al pulsante utilizzando l'interfaccia ActionListener. Quest'interfaccia definisce un solo metodo actionPerformed(ActionEvent evt) che ad ogni click sul pulsante viene invocato per generare un evento. Quindi l'unica cosa che bisogna fare è implementare l'interfaccia specificando le azioni da compiere e registrarlo nel JButton (addActionListener()) . In questo caso facciamo in modo che ad ogni click sul pulsante viene incrementato un contatore e visualizzato nel pulsante stesso:
class CountClickButton implements ActionListener {
  int count = 1;
  public void actionPerformed(ActionEvent e) {
    //Estraiamo il pulsante che ha generato l'evento
    JButton button = (JButton)e.getSource();
    button.setText("Click "+count);//Aggiorniamo il testo
    count++;
  }
}
...
JButton button = new JButton("Click 0");
button.addActionListener(new CountClickButton());
...

JButton Conta Click

Questo è il listener più specifico per il JButton. Atri listener possono essere utilizzati come il MouseMotionlistener, MouseListener e tutti gli altri definiti nelle superclassi.
Altri link che potrebbero interessarti
  • Utilizzare HTML in componenti Java Swing
  • Numeri casuali in java
  • Modalità Full Screen Exclusive in java
  • Leggere un file di testo in java
  • Le variabili atomiche in java
  • Le classi anonime
  • Java Regex
  • Java Database MySql
  • Java Cursor Mouse
  • Import Static Java
  • Implementare un Singleton
  • Implementare un KeyListener in java Swing
  • Implementare il System.out su una JTextArea
  • Il costrutto if in java
  • Il costrutto foreach in java
  • Il blocco static
  • Creare una ToolBar in Java Swing
  • Chiudere le applicazioni Java Swing
  • Bordo con titolo in Java Swing
  • Background Image per componenti Java Swing