Los menús son prácticos al momento de crear GUIs pues reducen la creación de nuevos componentes que puedan saturar nuestra interfaz dando un aspecto no amigable. Por este y otros motivos debes aprender a crear menús utilizando marcos (aunque también puedes hacerlo con paneles).

Para crear un menu se requieren tres clases, mencionadas a continuación:

JMenuBar: esta clase hereda de JComponent siendo una subclase y permite guardar componentes de tipo JMenu actuando como una piel, el mismo nombre lo indica pues actúa como una barra en la cual se colocan componentes JMenu.

JMenu: esta clase permite escribir el nombre de nuestro menu (menu padre) y en esta colocaremos submenus. Al momento de presionar desplegara los submenus contenidos. Ademas, esta clase permite agregar un JMenu a otro objeto JMenu permitiendo crear menús y submenus anidados.

JMenuItem: esta clase es un componente que debe agregarse a un JMenu y sera nuestra lista que se despliegue al presionar el menu (menu padre). Ademas, tras presionar nuestro submenu (JMenuItem) este lanza un evento el cual podremos manipular utilizando los métodos ofrecidos por la clase.

Para comenzar a crear nuestro primer menu, debemos crear un marco (ventana). Podemos hacerlo creando una instancia directamente de la clase como se muestra a continuación:

Código para Crear Marco

package menus;

import javax.swing.JFrame;

public class Menus {

    public static void main(String[] args) {
        JFrame f = new JFrame("Ventana con menus");
        BarraMenu barra=new BarraMenu();
        f.setJMenuBar(barra);
        f.setSize(800,600);
        f.setLocation(120,100);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
    
}

El metodo protagonista en esta ocasión es setJMenuBar. Este metodo permite establecer el menu a nuestra ventana (marco). Por lo que, pide por parámetro un objecto de tipo JMenuBar.

Para crear el menu, debemos hacer uso de pocos metodos que entenderás de forma inmediata.

Código para Crear Menu

package menus;

import javax.swing.*;

public class BarraMenu extends JMenuBar {
    
    public BarraMenu() {
        addMenus();
    }
    
    public final void addMenus() {
        JMenu archivo = new JMenu("Archivo");
        add(archivo);
        add(new JMenu("Editar"));
        add(new JMenu("Ayuda"));
        
        archivo.add(new JMenuItem("Abrir"));
        archivo.add(new JMenuItem("Guardar"));
        archivo.add(new JMenuItem("Cerrar"));
        archivo.addSeparator();
        
        JMenu propiedades = new JMenu("Propiedades");
        propiedades.add(new JMenuItem("Propiedad 1"));
        propiedades.add(new JMenuItem("Propiedad 2"));
        propiedades.add(new JMenuItem("Propiedad 3"));
        
        archivo.add(propiedades);//aqui se aprecian dos componentes JMenu anidados.
        archivo.addSeparator();
        archivo.add(new JMenuItem("Salir"));
    }
    
}

Aplicando un poco los conocimientos obtenidos con POO, heredo directamente de JMenuBar estableciendo mi barra para colocar los demás componentes.

El siguiente paso es crear una instancia de la clase JMenu y posteriormente hacer uso del metodo add(). Este permite agregar componentes de tipo JMenuItem y JMenu, usted debe pasar por parámetro el texto que desea mostrar.

addSeparator(): este metodo crea una linea que permite una mejor visión (algo estético para mejorar el diseño del menu).