Saltearse al contenido

Componentes de Menú en Swing

Menús y barras de herramientas

Los menús y barras de herramientas en Swing proporcionan una forma organizada de presentar acciones y opciones al usuario.

JMenuBar y JMenu

JMenuBar es un contenedor para menús (JMenu), que a su vez contienen elementos de menú (JMenuItem).

Se utiliza para crear una barra de menú en la parte superior de la ventana, organizando las funcionalidades de la aplicación de manera jerárquica.

Uso

  1. Se crea una instancia de JMenuBar.
  2. Se crean instancias de JMenu para cada menú principal.
  3. Se añaden JMenuItems a cada JMenu.
  4. Se añaden los JMenu al JMenuBar.
  5. Se establece el JMenuBar en el 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 EjemploMenu {
7
private JFrame frame;
8
private JMenuBar menuBar;
9
private JTextArea areaTexto;
10
11
public EjemploMenu() {
12
inicializarComponentes();
13
}
14
15
private void inicializarComponentes() {
16
frame = new JFrame("Ejemplo de Menú");
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 menú
26
menuBar = new JMenuBar();
27
28
// Menú Archivo
29
JMenu menuArchivo = new JMenu("Archivo");
30
JMenuItem itemNuevo = new JMenuItem("Nuevo");
31
JMenuItem itemSalir = new JMenuItem("Salir");
32
33
itemNuevo.addActionListener(new ActionListener() {
34
@Override
35
public void actionPerformed(ActionEvent e) {
36
areaTexto.setText("");
37
}
38
});
39
40
itemSalir.addActionListener(new ActionListener() {
41
@Override
42
public void actionPerformed(ActionEvent e) {
43
System.exit(0);
44
}
45
});
46
47
menuArchivo.add(itemNuevo);
48
menuArchivo.addSeparator();
49
menuArchivo.add(itemSalir);
50
51
// Menú Editar
52
JMenu menuEditar = new JMenu("Editar");
53
JMenuItem itemCopiar = new JMenuItem("Copiar");
54
JMenuItem itemPegar = new JMenuItem("Pegar");
55
56
itemCopiar.addActionListener(new ActionListener() {
57
@Override
58
public void actionPerformed(ActionEvent e) {
59
areaTexto.copy();
60
}
61
});
62
63
itemPegar.addActionListener(new ActionListener() {
64
@Override
65
public void actionPerformed(ActionEvent e) {
66
areaTexto.paste();
67
}
68
});
69
70
menuEditar.add(itemCopiar);
71
menuEditar.add(itemPegar);
72
73
// Añadir menús a la barra de menú
74
menuBar.add(menuArchivo);
75
menuBar.add(menuEditar);
76
77
// Establecer la barra de menú en el frame
78
frame.setJMenuBar(menuBar);
79
}
80
81
public void mostrar() {
82
frame.setVisible(true);
83
}
84
85
public static void main(String[] args) {
86
SwingUtilities.invokeLater(() -> {
87
EjemploMenu app = new EjemploMenu();
88
app.mostrar();
89
});
90
}
91
}

Información:

  1. Creación de JFrame y JTextArea:

    1
    frame = new JFrame("Ejemplo de Menú");
    2
    areaTexto = new JTextArea();
    3
    frame.add(new JScrollPane(areaTexto), BorderLayout.CENTER);

    Creamos el frame principal y un área de texto donde se mostrarán los resultados de las acciones del menú.

  2. Creación de JMenuBar:

    1
    menuBar = new JMenuBar();

    Este es el contenedor principal para todos los menús.

  3. Creación de JMenu:

    1
    JMenu menuArchivo = new JMenu("Archivo");
    2
    JMenu menuEditar = new JMenu("Editar");

    Cada JMenu representa un menú desplegable en la barra de menús.

  4. Creación de JMenuItem:

    1
    JMenuItem itemNuevo = new JMenuItem("Nuevo");
    2
    JMenuItem itemSalir = new JMenuItem("Salir");
    3
    // ... más items ...

    Cada JMenuItem representa una opción dentro de un menú.

  5. Añadir ActionListeners a los JMenuItem:

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

    Estos listeners definen qué sucede cuando se selecciona cada opción del menú.

  6. Añadir JMenuItem a JMenu:

    1
    menuArchivo.add(itemNuevo);
    2
    menuArchivo.addSeparator();
    3
    menuArchivo.add(itemSalir);

    Agregamos los items a sus respectivos menús. Notemos el uso de addSeparator() para agregar una línea separadora en el menú.

  7. Añadir JMenu a JMenuBar:

    1
    menuBar.add(menuArchivo);
    2
    menuBar.add(menuEditar);

    Agregamos los menús a la barra de menús.

  8. Establecer JMenuBar en JFrame:

    1
    frame.setJMenuBar(menuBar);

    Finalmente, establecemos la barra de menús en el frame.

Con este ejemplo creamos una aplicación con una barra de menús funcional que incluye opciones para crear un nuevo documento, salir de la aplicación, copiar y pegar texto. Las acciones de los menús interactúan con el JTextArea en el centro de la ventana.