Creare una ToolBar in Java Swing
- Home page »
- Programmazione »
- Java »
- Tips
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:
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:
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);