Ejemplo simple de JToolBar

De ChuWiki

Un JToolBar es la típica barra de botones que aparece en cualquier aplicación de escritorio. El JToolBar de java permite que lo arrastremos con el ratón para colocarlo en otra parte de la ventana de nuestra aplicación o incluso que quede flotando en una ventana propia.

Vamos a hacer un ejemplo sencillo de JToolBar, para ver cómo funciona.

Creación del JToolbar[editar]

Preparamos una ventana principal JFrame que tiene por defecto un BorderLayout. Este layout tiene cinco zonas, una central para la parte principal de nuestra aplicación y cuatro laterales (arriba, abajo, derecha e izquierda) pensadas precisamente para menús, barras de botones, de estado, etc. El código para la creación de este JFrame lo tienes explicado en Ejemplo sencillo con JFrame. Partimos de él.

El JToolBar es sencillo, sólo tenemos que hacerle un new y añadirle todos los botones o acciones que queramos. Luego basta añadirlo al JFrame en la posición que queramos (arriba, abajo, derecha o izquierda).

El JToolBar se crea con un simple new, al que podemos o no poner parámetros

JToolBar toolBar = new JToolBar(JToolBar.HORIZONTAL);
...

Si no ponemos parámetro, por defecto es horizontal, es decir, la barra de botones será alargada en sentido horizontal y los botones irán de izquierda a derecha. Si ponemos JToolBar.HORIZONTAL la barra de botones será alargada de forma vertical y los botones irán de arriba a abajo. Usaremos horizontal si queremos la barra de botones en la parte superior o inferior de JFrame, o vertical si la queremos en el lado izquierdo o derecho del JFrame

Añadir Action al JToolBar[editar]

Al JToolBar podemos añadirle directamente componentes java, como JButton o podemos añadirle clases que implementen la interface Action. Vimos ambas alternativas, con sus ventajas e inconvenientes en dar funcionalidad a un JMenuItem. Para este ejemplo vamos a usar la misma Action que en el enlace y luego añadiremos tres o cuatro botones.

El código para crear y añadir una Action

        Action saveAction = new AbstractAction("Save") {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("Save clicked");
            }
        };
        saveAction.putValue(Action.SHORT_DESCRIPTION,"Save the file");
        saveAction.putValue(Action.SMALL_ICON,new ImageIcon("src/main/files/Actions-document-save-icon.png"));

        toolBar.add(saveAction);

En dar funcionalidad a un JMenuItem ya vimos una explicación detallada de cómo se crea la Action, pero lo resumimos aquí

  • Heredamos de AbstractAction que a su vez implementa Action porque así nos ahorramos escribir algo de código.
  • Implementamos el método actionPerformed() que es el código que se ejecutará cuando alguien pulse el botón.
  • Ponemos cosas como icono y tooltip. No funcionan en JToolBar los atajos de teclado.

y finalmente, añadir la Action al JToolBar usando su método add()

Añadir botones al JToolBar[editar]

Para rellenar un poco más el JToolbar en nuestro ejemplo, pero sin complicarnos la vida, en vez de crear más Action, vamos simplemente a añadir JButton

        JButton button2 = new JButton("2");
        button2.addActionListener(e -> System.out.println("Button 2 clicked"));
        toolBar.add(button2);

        JButton button3 = new JButton("3");
        button3.addActionListener(e -> System.out.println("Button 3 clicked"));
        toolBar.add(button3);

El código es simple, crear JButton, añadirles un ActionListener para que hagan algo al pulsarlos y añadirlos al JToolBar

Añadir el JToolBar al JFrame[editar]

Solo nos queda añadir el JToolBar al JFrame. Como lo creamos horizontal, debemos ponerlo en la parte de arriba (NORTH) o en la de abajo (SOUTH). El código también es simple

frame.getContentPane().add(toolBar,BorderLayout.NORTH);

Ejecución y prueba del JToolBar[editar]

Listo, sólo nos queda ejecutar nuestro programa para ver nuestro JToolBar en funcionamiento. Fíjate que tiene unos puntitos al principio de la barra. Desde ellos puedes arrastrar el JToolBar con el ratón para colocarlo en la parte inferior, izquierda o derecha. Puedes incluso separarlo y hacerlo flotante en una ventana separada.

Tienes el código de todo esto en JToolBarExample.java