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
JMenupara cada menú principal. - Se añaden
JMenuItemsa cada JMenu. - Se añaden los
JMenualJMenuBar. - Se establece el
JMenuBaren 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
JFrameyJTextArea: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
JMenurepresenta 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
JMenuItemrepresenta una opción dentro de un menú. -
Añadir
ActionListenersa 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
JMenuItemaJMenu: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
JMenuaJMenuBar:1menuBar.add(menuArchivo);2menuBar.add(menuEditar);Agregamos los menús a la barra de menús.
-
Establecer
JMenuBarenJFrame: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.