Cómo crear un Menú en Java Swing con NetBeans
En esta entrada les traigo información sobre la creación de menús usando javax.swing y el editor Netbeans.
Un componente importante de cualquier aplicación gráfica es el Menú de opciones. En la figura 1 puedes observar los elementos de un menú, y su relación con los controles de javax.swing.

Figura 1. Componentes de un menú
A continuación, describiré como crear una barra de menú en una aplicación Java para escritorio.
Pasos para crear un menú sencillo en Java usando Netbeans
- Primero es necesario crear un proyecto como lo explico en mi post anterior: Interfaz Gráfica de usuario con netbeans
- Nos aseguramos de estar en la vista Diseño (Design). Ahora, usaremos la sección Swing Menu de la paleta de controles (ver figura 2) e insertar un control Menu Bar en el JFrame.

Figura 2. Sección de controles para menú de la paleta de NetBeans
Esto creará la barra de menú con dos Menús por default: File y Edit como se muestra en la figura 3.

Figura 3. Una barra de menú estándar agregada a una aplicación
- Por supuesto que los menús establecidos pueden ser modificados, y es lo que ahora haremos. Selecciona el menú predefinido File en la barra de menú creada y a continuación utiliza el panel de propiedades para modificar las propiedades básicas de un menú. En la figura 4 muestro las propiedades básicas del control JMenu que se pueden modificar en tiempo de edición.

Figura 4. Propiedades de JMenu
- Una vez que se han creado los menús, lo siguiente es añadir los elementos de menú o JMenuItem, que en esencia serán los controles que responderán al evento del click. Existen tres tipos de elemento de menú: los típicos elementos de menú (JMenuItem), los elementos de dos estados los cuales están puestos o no lo están (on/off) como los JRadioButtonMenuItem (que usa un botón de opción para activarse o desactivarse) y los JCheckBoxMenuItem (que utiliza una casilla de verificación para activarse o desactivarse). El tercer tipo de elemento de menú en realidad no es un elemento de menú, aunque a los ojos de los usuarios así parezca: un elemento que abre otro menú. Se trata en realidad de un JMenu insertado dentro de otro JMenu para crear un submenú.
- Para insertar un JMenuItem, selecciona este control de la paleta de controles, sección Swing Menus y suéltalo encima del menú en el que quieras que se encuentre dentro de la barra que has creado, si se trata del primer elemento de menú que añades. La figura 5 te muestra como NetBeans dibujará un rectángulo amarillo punteado sobre el menú en el que soltarás el elemento.

Figura 5. Inserción del primer elemento de menú dentro de un JMenu
- A partir del segundo elemento de menú, puedes repetir el mismo procedimiento del paso 5, o desplegar primero el menú correspondiente haciendo click en él y después soltarlo en el orden que quieras. NetBeans te guiará con una línea amarilla punteada como se muestra en la figura 6. Recuerda que si quieres insertar un submenú, la única diferencia es insertar un JMenu en lugar de un JMenuItem. Y para agregar los elementos del submenú deberás utilizar algunos de los JMenuItem.

Figura 6. Inserción de un segundo elemento de menú dentro de un JMenu
Configurando la acción del menú
Si has seguido los pasos, tendrás una aplicación con una barra de menú que despliega elementos de menú. Pero estos aún no ejecutarán nada. Por ello es que debemos configurar a los elementos y unirlos con el método que responderá al evento del click. Existen dos formas de hacerlo:
- Configurando el evento: selecciona la pestaña Events del panel de Propiedades y ahí puedes seleccionar a que evento quieres que responda el elemento del menú. Lo más común es configurar el actionPerfomed. Para ello, haz click sobre ese listener y aunque el método aún no exista, NetBeans lo creará tomando el nombre del control. (Ver figura 7)

Figura 7. Configurando el evento actionPerformed de un JMenuItem
- Creando el método: se puede crear el método que responderá al evento por default, en este caso, el click sobre el elemento del menú, simplemente haciendo doble click sobre el JMenuItem. Eso abrirá el editor en el modo Source (Fuente), posicionándose exactamente en el método creado, y ya listo para que sólo agregues el código que quieres que se ejecute al hacer click sobre el menú.
Para el ejemplo que se ha desarrollado a lo largo de esta entrada, he creado tres elementos de menú y por lo tanto tres métodos para responder al click:
private void jMenuItemRegistroActionPerformed(java.awt.event.ActionEvent evt) { nombre = JOptionPane.showInputDialog(this, "Escribe tu nombre: "); jMenuItemSaludo.setEnabled(true); } private void jMenuItemSaludoActionPerformed(java.awt.event.ActionEvent evt) { JOptionPane.showMessageDialog(this, "Hola " + nombre); } private void jMenuItemSalirActionPerformed(java.awt.event.ActionEvent evt) { this.dispose(); }
Los elementos de menú creados son:
- jMenuItemRegistro
- jMenuItemSaludo
- jMenuItemSalir
NetBeans se encarga de la creación del método usando el nombre del control y añadiendo las palabras ActionPerformed. En el método initComponents crea el listener adecuado e indica que el método a ejecutarse será precisamente alguno de los tres creados. Por ejemplo, para jMenuItemSaludo, el siguiente código se creará automáticamente en initComponents:
jMenuItemSaludo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK)); jMenuItemSaludo.setText("Saludo"); jMenuItemSaludo.setEnabled(false); jMenuItemSaludo.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItemSaludoActionPerformed(evt); } }); jMenu1.add(jMenuItemSaludo);
Terminando…
Para terminar, ya sólo falta que comiences a experimentar creando tu propio menú. Pongo a la disposición de quien guste, un ejemplo muy sencillo que usa tres elementos de menú. Haz click aquí: codigoMenu
(Sólo se encuentra el código fuente, recuerda que debes crear el proyecto y el paquete para correrlo en NetBeans)
Saludos, y ya saben, si te gustó o si tienes alguna duda, déjame un comentario. 🙂
PROFE. ya ley leí el bloc