La siguiente imagen muestra una aplicación que contiene una barra de herramientas sobre un área de texto.
Por defecto, el usuario puede arrastrar la barra de herramientas a un lateral distinto de su contenedor o fuera dentro de su propia ventana. La siguiente figura muestra cómo aparece la aplicación después de que el usuario haya arrastrado la barra de herramientas al lateral derecho de su contenedor. Para hacer que el arrastre de la barra de herramientas funcione correctamente, la barra debe estar en un contenedor que use BorderLayout, y el contenedor sólo debe tener otro componente que esté situado en el centro.
La siguiente figura muestra cómo aparece la aplicación después de que el usuario haya arrastrado la barra de herramientas fuera de su ventana.
El siguiente código implementa la barra de herramientas. Puedes encontrar el programa complento en ToolBarDemo.java. Y las imágenes en left.gif, middle.gif, y LEFT.gif.
Nota: Si algún botón de nuestra barra de herramientas duplica la funcionalidad de otros componentes, como un ítem de menú, probablemente deberíamos crear y añadir los botones de la barra de herramientas como se describe en Cómo usar Actions.
public ToolBarDemo() {
...
JToolBar toolBar = new JToolBar();
addButtons(toolBar);
...
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
...
contentPane.add(toolBar, BorderLayout.NORTH);
contentPane.add(scrollPane, BorderLayout.CENTER);
...
}
protected void addButtons(JToolBar toolBar) {
JButton button = null;
//first button
button = new JButton(new ImageIcon("images/left.gif"));
...
toolBar.add(button);
//second button
button = new JButton(new ImageIcon("images/middle.gif"));
...
toolBar.add(button);
//third button
button = new JButton(new ImageIcon("images/LEFT.gif"));
...
toolBar.add(button);
}
Añadiendo unas pocas líneas de código al ejemplo anterior, podemos demostrar algunas características más de las barras de herramientas:
Como la barra de herramientas ya no se puede arrastrar, no tiene el marcado en su flanco izquierdo. Aquí está el código que desactiva el arrastre:
toolBar.setFloatable(false);La mayor diferencia visible es que la barra de herramientas contiene dos componentes nuevos, que están precedidos por un espacio en blanco -- un separador . Aquí está el código que añade el separador:
toolBar.addSeparator();Aquí está el código que añade los nuevos componentes:
...//add to where the first button is initialized:
button.setAlignmentY(CENTER_ALIGNMENT);
...//add to where the second button is initialized:
button.setAlignmentY(CENTER_ALIGNMENT);
...//add to where the third button is initialized:
button.setAlignmentY(CENTER_ALIGNMENT);
...
//fourth button
button = new JButton("Another button");
...
button.setAlignmentY(CENTER_ALIGNMENT);
toolBar.add(button);
//fifth component is NOT a button!
JTextField textField = new JTextField("A text field");
...
textField.setAlignmentY(CENTER_ALIGNMENT);
toolBar.add(textField);
La llamada a setAlignmentY es necesaria para que los componentes de la barra de herramientas se alineen correctamente. Si el código no seleccionara el alineamiento, el campo de texto se posicionaría demasiado arriba. Este es el resultado de JToolBar usando BoxLayout como controlador de distribución, y los botones y campos de texto tienen distinto alineamiento Y por defecto. Si encontramos problemas de distribución con una barra de herramientas podemos ver la página Cómo usar BoxLayout para buscar ayuda.
Las siguientes tablas listan los métodos y constructores más utilizados de JToolBar. Otros métodos útiles están definidos por las clases JComponent, Container, y Component.
Método Propósito JToolBar() Crea una barra de herramientas. JButton add(Action)
Component add(Component)Añade un componente (normalmente un botón) a la barra de herramientas. Si el argumento de add es un objeto Action, la barra de herramientas crea automáticamente un JButton y lo añade. void addSeparator() Añade un separador al final de la barra de herramientas. void setFloatable(boolean)
boolean isFloatable()La propiedad floatable es true por defecto, para indicar que el usuario puede arrastrar la barra de herramientas a una ventana separada. Para desactivar el arrastre de la barra de herramientas se utiliza toolbar.setFloatable(false).
Esta tabla lista ejemplos que usan JToolBar y dónde encontrarlos.
Ejemplo Dónde se describe Notas ToolBarDemo.java Esta página. Una barra de herramientas básica que usa botónes de iconos. ToolBarDemo2.java Esta página Demuestra una barra de herramientas no arrastrable que contiene un separador y dos componentes que no son botones. ActionDemo.java Cómo usar Actions Implementa una barra de herramientas usando objetos Action.