Saltearse al contenido

Componentes de Barra de Herramientas en Swing

Barras de herramientas

Las barras de herramientas en Swing proporcionan un acceso rápido a las acciones más comunes de una aplicación, complementando la funcionalidad de los menús.

JToolBar

JToolBar es un contenedor para componentes, típicamente botones, que representan acciones frecuentes en la aplicación.

Se utiliza para crear una barra de herramientas que puede ubicarse en diferentes bordes de la ventana y, opcionalmente, ser movible por el usuario.

Uso

  1. Se crea una instancia de JToolBar.
  2. Se añaden componentes (generalmente JButton) a la barra de herramientas.
  3. Se configura la posición y comportamiento de la barra de herramientas.
  4. Se añade la JToolBar al contenedor principal (generalmente un JFrame).

Ejemplo:

1
import javax.swing.*;
2
import java.awt.*;
3
import java.awt.event.ActionEvent;
4
import java.awt.event.ActionListener;
5
6
public class EjemploToolBar {
7
private JFrame frame;
8
private JToolBar toolBar;
9
private JTextArea areaTexto;
10
11
public EjemploToolBar() {
12
inicializarComponentes();
13
}
14
15
private void inicializarComponentes() {
16
frame = new JFrame("Ejemplo de ToolBar");
17
frame.setSize(400, 300);
18
frame.setLocationRelativeTo(null);
19
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
20
21
// Crear el área de texto
22
areaTexto = new JTextArea();
23
frame.add(new JScrollPane(areaTexto), BorderLayout.CENTER);
24
25
// Crear la barra de herramientas
26
toolBar = new JToolBar();
27
toolBar.setFloatable(true); // Permite que la barra sea movible
28
29
// Botón Nuevo
30
JButton btnNuevo = new JButton(new ImageIcon("assets/new.png"));
31
btnNuevo.setToolTipText("Nuevo");
32
btnNuevo.addActionListener(new ActionListener() {
33
@Override
34
public void actionPerformed(ActionEvent e) {
35
areaTexto.setText("");
36
}
37
});
38
39
// Botón Copiar
40
JButton btnCopiar = new JButton(new ImageIcon("assets/copy.png"));
41
btnCopiar.setToolTipText("Copiar");
42
btnCopiar.addActionListener(new ActionListener() {
43
@Override
44
public void actionPerformed(ActionEvent e) {
45
areaTexto.copy();
46
}
47
});
48
49
// Botón Pegar
50
JButton btnPegar = new JButton(new ImageIcon("assets/paste.png"));
51
btnPegar.setToolTipText("Pegar");
52
btnPegar.addActionListener(new ActionListener() {
53
@Override
54
public void actionPerformed(ActionEvent e) {
55
areaTexto.paste();
56
}
57
});
58
59
// Añadir botones a la barra de herramientas
60
toolBar.add(btnNuevo);
61
toolBar.addSeparator();
62
toolBar.add(btnCopiar);
63
toolBar.add(btnPegar);
64
65
// Añadir un componente personalizado (JComboBox)
66
String[] estilos = {"Normal", "Negrita", "Cursiva"};
67
JComboBox<String> comboEstilos = new JComboBox<>(estilos);
68
comboEstilos.addActionListener(new ActionListener() {
69
@Override
70
public void actionPerformed(ActionEvent e) {
71
String estilo = (String) comboEstilos.getSelectedItem();
72
cambiarEstiloTexto(estilo);
73
}
74
});
75
toolBar.addSeparator();
76
toolBar.add(comboEstilos);
77
78
// Añadir la barra de herramientas al frame
79
frame.add(toolBar, BorderLayout.NORTH);
80
}
81
82
private void cambiarEstiloTexto(String estilo) {
83
Font currentFont = areaTexto.getFont();
84
Font newFont;
85
switch (estilo) {
86
case "Negrita":
87
newFont = currentFont.deriveFont(Font.BOLD);
88
break;
89
case "Cursiva":
90
newFont = currentFont.deriveFont(Font.ITALIC);
91
break;
92
default:
93
newFont = currentFont.deriveFont(Font.PLAIN);
94
}
95
areaTexto.setFont(newFont);
96
}
97
98
public void mostrar() {
99
frame.setVisible(true);
100
}
101
102
public static void main(String[] args) {
103
SwingUtilities.invokeLater(() -> {
104
EjemploToolBar app = new EjemploToolBar();
105
app.mostrar();
106
});
107
}
108
}

Información:

  1. Creación de JToolBar:

    1
    toolBar = new JToolBar();
    2
    toolBar.setFloatable(true);

    Creamos la barra de herramientas y la configuramos como “flotante”, lo que permite al usuario moverla.

  2. Creación de botones para la barra de herramientas:

    1
    JButton btnNuevo = new JButton(new ImageIcon("assets/new.png"));
    2
    btnNuevo.setToolTipText("Nuevo");

    Creamos botones con iconos y les asignamos un texto de ayuda (tooltip).

  3. Añadir ActionListeners a los botones:

    1
    btnNuevo.addActionListener(new ActionListener() {
    2
    @Override
    3
    public void actionPerformed(ActionEvent e) {
    4
    areaTexto.setText("");
    5
    }
    6
    });

    Definimos las acciones que se ejecutarán al hacer clic en los botones.

  4. Añadir botones a JToolBar:

    1
    toolBar.add(btnNuevo);
    2
    toolBar.addSeparator();
    3
    toolBar.add(btnCopiar);

    Agregamos los botones a la barra de herramientas. Usamos addSeparator() para añadir una línea separadora entre grupos de botones.

  5. Añadir componentes personalizados:

    1
    JComboBox<String> comboEstilos = new JComboBox<>(estilos);
    2
    toolBar.add(comboEstilos);

    Demostramos cómo añadir otros tipos de componentes, como un JComboBox, a la barra de herramientas.

  6. Establecer JToolBar en JFrame:

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

    Añadimos la barra de herramientas al frame, posicionándola en la parte superior.

Este ejemplo crea una aplicación con una barra de herramientas funcional que incluye botones para crear un nuevo documento, copiar y pegar texto, así como un selector de estilo de fuente. Las acciones de la barra de herramientas interactúan con el JTextArea en el centro de la ventana.

Características adicionales de JToolBar:

  1. Orientación: Podemos cambiar la orientación de la barra de herramientas:

    1
    toolBar.setOrientation(SwingConstants.VERTICAL);
  2. Bordes: Podemos personalizar o eliminar los bordes:

    1
    toolBar.setBorderPainted(false);
  3. Tamaño de botones: Podemos establecer un tamaño uniforme para todos los botones:

    1
    toolBar.setRollover(true);
  4. Drag and Drop: Por defecto, una JToolBar flotante puede ser arrastrada a diferentes bordes del contenedor. Podemos desactivar esta función:

    1
    toolBar.setFloatable(false);

JToolBar proporciona una manera eficiente de ofrecer acceso rápido a las funciones más utilizadas en una aplicación Swing, mejorando la usabilidad y la experiencia del usuario.