Hola a todos, hoy os explicare como colocar un menú en una aplicación en Java.
Un menú es un componente que vemos muy a menudo en las aplicaciones gráficas, con varias acciones comunes.
La clase que usaremos son JMenuBar, JMenu y JMenuItem, en el paquete javax.swing.
JMenuBar, crea la barra de menú, JMenu, las opciones de la barra del menú, y JMenuItem, las opciones que se despliegan en JMenu.
Vamos a ir paso a paso, después os dejare el ejemplo completo. Recuerda que debemos importar las clases que están javax.swing.
Lo primero será crear la barra de menú con JMenuBar, no tenemos que pasarle parámetros.
JMenuBar barraMenu=new JMenuBar();
Después creamos los menús con JMenu, a estos le podemos pasar como parámetro un String con el nombre del menú.
JMenu archivo=new JMenu("Archivo"); JMenu editar=new JMenu("Editar");
Añadimos los anteriores menus a la barra de menú.
barraMenu.add(archivo); barraMenu.add(editar);
Ahora vamos a crear los submenus con JMenuItem.
JMenuItem abrir=new JMenuItem("Abrir"); JMenuItem guardar=new JMenuItem("Guardar"); JMenuItem cargar=new JMenuItem("Cargar"); JMenuItem salir=new JMenuItem("Salir"); JMenuItem modificar=new JMenuItem("Modificar"); JMenuItem copiar=new JMenuItem("Copiar"); JMenuItem pegar=new JMenuItem("Pegar");
Ahora debemos añadir los anteriores submenus a sus respectivos menús.
archivo.add(abrir); archivo.add(guardar); archivo.add(cargar); archivo.add(salir); editar.add(modificar); editar.add(copiar); editar.add(pegar);
Por último, indicaremos la barra que usaremos en la aplicación con el método setJMenuBar de la clase Frame,
setJMenuBar(barraMenu);
Vemos como queda: También podemos añadir separadores entre los submenus, para ello usaremos la clase JSeparator. Veamos como se haría:
archivo.add(abrir); archivo.add(new JSeparator()); archivo.add(guardar); archivo.add(cargar); archivo.add(new JSeparator()); archivo.add(salir);
Otra forma seria así:
JSeparator separador=new JSeparator(); JSeparator separador2=new JSeparator(); archivo.add(abrir); archivo.add(separador); archivo.add(guardar); archivo.add(cargar); archivo.add(separador2); archivo.add(salir);
Vemos como queda: Os dejo el ejemplo completo:
import java.awt.EventQueue; import javax.swing.*; public class EjemploMenu extends JFrame { private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { EjemploMenu frame = new EjemploMenu(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public EjemploMenu() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setLayout(null); setContentPane(contentPane); //Creamos la barra de Menu JMenuBar barraMenu=new JMenuBar(); //Creamos los menus JMenu archivo=new JMenu("Archivo"); JMenu editar=new JMenu("Editar"); //Añadimos los menus a la barra de menu barraMenu.add(archivo); barraMenu.add(editar); //Creamos los submenus JMenuItem abrir=new JMenuItem("Abrir"); JMenuItem guardar=new JMenuItem("Guardar"); JMenuItem cargar=new JMenuItem("Cargar"); JMenuItem salir=new JMenuItem("Salir"); JMenuItem modificar=new JMenuItem("Modificar"); JMenuItem copiar=new JMenuItem("Copiar"); JMenuItem pegar=new JMenuItem("Pegar"); //Añadimos los submenus a los menus archivo.add(abrir); archivo.add(new JSeparator()); archivo.add(guardar); archivo.add(cargar); archivo.add(new JSeparator()); archivo.add(salir); editar.add(modificar); editar.add(copiar); editar.add(pegar); //Indicamos que es el menu por defecto setJMenuBar(barraMenu); } }
Por último, también podemos indicar con un char (en realidad es un int) como parámetro para acceder rápidamente al submenu, es importantes que el carácter este en el nombre del submenu. Por ejemplo:
JMenuItem abrir=new JMenuItem("Abrir", 'A');
Se subrayara la A de Abrir, si le colocas un evento y pulsas la letra subrayada, se ejecutara. También podemos poner un acceso rápido al menú (JMenu), este no se indica en el constructor, usaremos el método setMnemonic(char) y lo ejecutaremos con ALT+»Letra indicada». Os dejo el ejemplo completo, con los accesos rápidos con un evento en el submenu Salir:
import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class EjemploMenu extends JFrame { private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { EjemploMenu frame = new EjemploMenu(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public EjemploMenu() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setLayout(null); setContentPane(contentPane); setFocusable(true); //Creamos la barra de Menu JMenuBar barraMenu=new JMenuBar(); //Creamos los menus y modificamos los accesos rapidos JMenu archivo=new JMenu("Archivo"); archivo.setMnemonic('A'); JMenu editar=new JMenu("Editar"); editar.setMnemonic('E'); //Añadimos los menus a la barra de menu barraMenu.add(archivo); barraMenu.add(editar); //Creamos los submenus y modificamos los accesos rapidos JMenuItem abrir=new JMenuItem("Abrir", 'A'); JMenuItem guardar=new JMenuItem("Guardar", 'G'); JMenuItem cargar=new JMenuItem("Cargar", 'C'); JMenuItem salir=new JMenuItem("Salir", 'S'); JMenuItem modificar=new JMenuItem("Modificar", 'M'); JMenuItem copiar=new JMenuItem("Copiar", 'C'); JMenuItem pegar=new JMenuItem("Pegar", 'P'); //Añadimos los submenus a los menus archivo.add(abrir); archivo.add(new JSeparator()); archivo.add(guardar); archivo.add(cargar); archivo.add(new JSeparator()); archivo.add(salir); editar.add(modificar); editar.add(copiar); editar.add(pegar); //Indicamos que es el menu por defecto setJMenuBar(barraMenu); salir.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ System.exit(0); } }); } }
Con netBeans, se hace de una manera más sencilla, podemos hacerlo de forma gráfica, en la pestaña diseño de un elemento gráfico.
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Como puedo abrir un archivo desde el menu