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
- Se crea una instancia de
JMenuBar
. - Se crean instancias de
JMenu
para cada menú principal. - Se añaden
JMenuItems
a cada JMenu. - Se añaden los
JMenu
alJMenuBar
. - Se establece el
JMenuBar
en elJFrame
.
Ejemplo:
1import javax.swing.*;2import java.awt.*;3import java.awt.event.ActionEvent;4import java.awt.event.ActionListener;5
6public 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 texto22 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ú Archivo29 JMenu menuArchivo = new JMenu("Archivo");30 JMenuItem itemNuevo = new JMenuItem("Nuevo");31 JMenuItem itemSalir = new JMenuItem("Salir");32
33 itemNuevo.addActionListener(new ActionListener() {34 @Override35 public void actionPerformed(ActionEvent e) {36 areaTexto.setText("");37 }38 });39
40 itemSalir.addActionListener(new ActionListener() {41 @Override42 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ú Editar52 JMenu menuEditar = new JMenu("Editar");53 JMenuItem itemCopiar = new JMenuItem("Copiar");54 JMenuItem itemPegar = new JMenuItem("Pegar");55
56 itemCopiar.addActionListener(new ActionListener() {57 @Override58 public void actionPerformed(ActionEvent e) {59 areaTexto.copy();60 }61 });62
63 itemPegar.addActionListener(new ActionListener() {64 @Override65 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 frame78 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:
-
Creación de
JFrame
yJTextArea
:1frame = new JFrame("Ejemplo de Menú");2areaTexto = new JTextArea();3frame.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ú.
-
Creación de
JMenuBar
:1menuBar = new JMenuBar();Este es el contenedor principal para todos los menús.
-
Creación de JMenu:
1JMenu menuArchivo = new JMenu("Archivo");2JMenu menuEditar = new JMenu("Editar");Cada
JMenu
representa un menú desplegable en la barra de menús. -
Creación de JMenuItem:
1JMenuItem itemNuevo = new JMenuItem("Nuevo");2JMenuItem itemSalir = new JMenuItem("Salir");3// ... más items ...Cada
JMenuItem
representa una opción dentro de un menú. -
Añadir
ActionListeners
a losJMenuItem
:1itemNuevo.addActionListener(new ActionListener() {2@Override3public void actionPerformed(ActionEvent e) {4areaTexto.setText("");5}6});Estos listeners definen qué sucede cuando se selecciona cada opción del menú.
-
Añadir
JMenuItem
aJMenu
:1menuArchivo.add(itemNuevo);2menuArchivo.addSeparator();3menuArchivo.add(itemSalir);Agregamos los items a sus respectivos menús. Notemos el uso de
addSeparator()
para agregar una línea separadora en el menú. -
Añadir
JMenu
aJMenuBar
:1menuBar.add(menuArchivo);2menuBar.add(menuEditar);Agregamos los menús a la barra de menús.
-
Establecer
JMenuBar
enJFrame
:1frame.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.