Creare una ToolBar in Java Swing

di  Antonio Coschignano, venerd́ 07 settembre 2012

La cosiddetta toolbar rappresenta un componente fondamentale nelle moderne interfaccie grafiche. Di solito visualizza i comandi e le azioni più utili di una generica applicazione Desktop. In java viene implementata dalla classe JToolBar del package javax.swing E' molto semplice implementarla e collegarla direttamente ad un JFrame. Vediamo un esempio di codice:

...
JToolBar toolBar = new JToolBar();
JFrame frame = new JFrame("ToolBarExample");
frame.getContentPane().add(toolBar, BorderLayout.NORTH);
frame.setVisible(true);
...

In questo caso abbiamo creato una toolBar vuota e l'abbiamo inserita nel JFrame. Adesso la popoliamo con qualche JButton:

...
toolBar.add(new JButton("Apri"));
toolBar.add(new JButton("Salva"));
toolBar.add(new JButton("Esci"));
toolBar.add(new JButton("About"));
...

Se inseriamo questo pezzo di codice nell'esempio precedente otteniamo questa finestra:

Esempio ToolBar 1

Una JToolBar può contenere qualsiasi JComponent utilizzando altre implementazioni del metodo add(). Comunque di solito una toolBar contiene diverse icone. Nel codice qui sotto vediamo come aggiungere pulsanti che contengono icone utilizzando l'oggetto ImageIcon all'interno di un JButton:

try {
    URL urlImageOpen = new URL("http://www.simplesoft.it/img/articles/java/toolBar/open.png");
    URL urlImageSave = new URL("http://www.simplesoft.it/img/articles/java/toolBar/save.png");
    URL urlImageAbout = new URL("http://www.simplesoft.it/img/articles/java/toolBar/about.png");
    URL urlImageExit = new URL("http://www.simplesoft.it/img/articles/java/toolBar/exit.png");
    JButton buttonOpen = new JButton(new ImageIcon(urlImageOpen));
    JButton buttonSave = new JButton(new ImageIcon(urlImageSave));
    JButton buttonAbout = new JButton(new ImageIcon(urlImageAbout));
    JButton buttonExit = new JButton(new ImageIcon(urlImageExit));
    toolBar.add(buttonOpen);
    toolBar.add(buttonSave);
    toolBar.add(buttonAbout);
    toolBar.add(buttonExit);
} catch (Exception ex) {
    ex.printStackTrace();
}

In questo caso le icone sono state scaricate da Internet, quindi per visualizzarle bisogna essere collegati alla rete. Questo è l'esempio completo:

package simplesoft;

import java.awt.BorderLayout;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JToolBar;

public class ToolBarExample {

    public static void main(String[] args) {
        JToolBar toolBar = new JToolBar();
        populateIconToolBar(toolBar);
        JFrame frame = new JFrame("ToolBarExample");
        frame.getContentPane().add(toolBar, BorderLayout.NORTH);
        frame.setVisible(true);
    }

    public static void populateToolBar(JToolBar toolBar) {
        toolBar.add(new JButton("Apri"));
        toolBar.add(new JButton("Salva"));
        toolBar.add(new JButton("Esci"));
        toolBar.add(new JButton("About"));
    }

    public static void populateIconToolBar(JToolBar toolBar) {
        try {
            URL urlImageOpen = new URL("http://www.simplesoft.it/img/articles/java/toolBar/open.png");
            URL urlImageSave = new URL("http://www.simplesoft.it/img/articles/java/toolBar/save.png");
            URL urlImageAbout = new URL("http://www.simplesoft.it/img/articles/java/toolBar/about.png");
            URL urlImageExit = new URL("http://www.simplesoft.it/img/articles/java/toolBar/exit.png");
            JButton buttonOpen = new JButton(new ImageIcon(urlImageOpen));
            JButton buttonSave = new JButton(new ImageIcon(urlImageSave));
            JButton buttonAbout = new JButton(new ImageIcon(urlImageAbout));
            JButton buttonExit = new JButton(new ImageIcon(urlImageExit));
            toolBar.add(buttonOpen);
            toolBar.add(buttonSave);
            toolBar.add(buttonAbout);
            toolBar.add(buttonExit);
        } catch (Exception ex) {
        	ex.printStackTrace();
        }
    }
}

Il codice produce questo risultato:

Esempio ToolBar 2

Utilizziamo la classe URL in quanto le icone si trovano in remoto. Comunque possono essere inserite anche in locale tramite le risorse del progetto. In questo caso bisogna utilizzare altri tipi di costruttori della classe ImageIcon.

In ultimo, se provate a trascinare la toolBar nel JFrame vedrete che potete posizionarla in diverse aree dell'interfaccia. Se volete bloccare la barra potete utilizzare questo metodo:

 toolBar.setFloatable(false);
Altri link che potrebbero interessarti
  • » Utilizzare un JButton in Java Swing
  • » 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
  • » Chiudere le applicazioni Java Swing
  • » Bordo con titolo in Java Swing
  • » Background Image per componenti Java Swing