Inicio > Java > Java Creacion de JMenuBar con Swing

Java Creacion de JMenuBar con Swing

Para que sigan avanzando con sus proyectos dejo a su disposiciòn un pequeño tutorial sobre como crear JMenuBar y como implementar su funcionalidad.

Para empezar debemos conocer los JComponent’s que estan involucrados para poder crear la barra de menu

JMenu

Como muestra la imagen, una barra de menu se compone de:

  • JMenuBar:  Es la barra de menú principal. Una barra horizontal alargada en la que se colocarán las distintas opciones.
  • JMenu: Es una de las cosas que se pueden añadir a un JMenuBar o a otro JMenu. Cuando añadimos uno de estos, tendremos un algo que al pinchar despliega un nuevo menú.
  • JMenuItem: Es una opción del JMenu que cuando lo pinchas hace algo

A continuación mostraremos la jerarquia, cómo está hecho el menú de la calculadora de Windows 7

JMenuBar
	|_______ JMenu (Ver)
	|			|_______ JMenuItem (Estandar)
	|			|_______ JMenuItem (Científica)
	|
	|_______ JMenu (Edición)
	|			|_______ JMenuItem (Copiar)
	|			|_______ JMenuItem (Pegar)
	|			|_______ JMenu (Historial)
	|						|_______ JMenuItem (Copiar Historial)
	|						|_______ JMenuItem (Editar)
	|						|_______ JMenuItem (Cancelar edicion)
	|						|_______ JMenuItem (Borrar)
	|
	|_______ JMenu (Ayuda)
				|_______ JMenuItem (Ver la Ayuda)
				|_______ JMenuItem (Acerca de Calculadora)

Ahora vamos a lo que realmente nos servirá… el codigo :P
Para este ejemplo crearemos el mismo menu de la calculadora de windows

WPrincipal.java

/*
 * Importo todo lo necesario para empezar
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/* Ésta clase "WPrincipal" heredará de JFrame */
public class WPrincipal extends JFrame {
	/* Atributos de la Clase */
	
	/* Declaro mi JMenuBar, éste me dibujara una barra horizontal */
	private JMenuBar barraMenu;
	
	/* Declaro los JMenu */
	private JMenu menuVer,menuEdicion,menuAyuda,menuHistorial;
	
	/* Declaro todos los JMenuItem */
	private JMenuItem itmEstandar,itmCientifica,itmCopiar,itmPegar,itmHistorialCopiar,itmHistorialEditar,itmHistorialCancelar,itmHistorialBorrar,itmAyudaVer,itmAyudaAcerca;
	
	
	/* Constructor Por Defecto */
	public WPrincipal() {
		/* con el super llamo al constructor del Padre y le paso el titulo de la ventana */
		super("Ejemplo JMenuBar");
		/* Inicializo todos los componentes de la ventana */
		this.barraMenu 			= new JMenuBar();
		
		this.menuVer 			= new JMenu("Ver");
		this.menuEdicion 		= new JMenu("Editar");
		this.menuAyuda 			= new JMenu("Ayuda");
		this.menuHistorial 		= new JMenu("Historial");
		
		this.itmEstandar 		= new JMenuItem("Estandar");
		this.itmCientifica 		= new JMenuItem("Cientifica");
		
		this.itmCopiar			= new JMenuItem("Copiar");
		this.itmPegar			= new JMenuItem("Pegar");
		
		this.itmHistorialCopiar	= new JMenuItem("Copiar Historial");
		this.itmHistorialEditar	= new JMenuItem("Editar");
		this.itmHistorialCancelar=new JMenuItem("Cancelar Edición");
		this.itmHistorialBorrar	= new JMenuItem("Borrar");
		this.itmAyudaVer		= new JMenuItem("Ver La Ayuda");
		this.itmAyudaAcerca		= new JMenuItem("Acerca de Calculadora");
		/* llamo al metodo init para ir agregando los componentes a la ventana */
		this.init();
		
	}
	public void init() {
		/* Le doy las dimensiones a mi ventana */
		this.setSize(250,300);
		/* le digo que al presionar el boton "X" el programa se detenga */
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		/* 	Ahora empezaré a agregar los JMenu al JMenuBar y los JMenuItem a los JMenu */
		
		/* Primero agrego el JMenu "Ver" a la Barra de Menu */
		this.barraMenu.add(this.menuVer);
			/* 
			Ahora al JMenu "Ver" Agrego dos JMenuItem 
			Deberia quedar Mas o menos asi:
					[ Ver ► ]
						|__ Estandar
						|__ Científica
			*/
			this.menuVer.add(this.itmEstandar);
			this.menuVer.add(this.itmCientifica);
		/* Ahora es el turno del JMenu "Edicion" agregarse a la barra de menu */
		this.barraMenu.add(this.menuEdicion);
			/* 
				Al JMenu "Edición" le agrego 2 JMenuItem y 1 JMenu
				Deberia quedar Mas o menos asi:
					[ Edicion ► ]
						|__ Copiar
						|__ Pegar
						|__ [ Historial ► ]
			 */
			this.menuEdicion.add(this.itmCopiar);
			this.menuEdicion.add(this.itmPegar);
			this.menuEdicion.add(this.menuHistorial);
				/* 
					Al JMenu Historial (que esta dentro del JMenu Editar) 
					le agrego los Items 
					[ Edicion ► ]
						|__ Copiar
						|__ Pegar
						|__ [ Historial ► ]
									|__ Copiar
									|__ Editar
									|__ Cancelar
									|__ Borrar
				 */
				this.menuHistorial.add(this.itmHistorialCopiar);
				this.menuHistorial.add(this.itmHistorialEditar);
				this.menuHistorial.add(this.itmHistorialCancelar);
				this.menuHistorial.add(this.itmHistorialBorrar);
		/* Por ultimo Agrego el JMenu Ayuda a la barra */
		this.barraMenu.add(this.menuAyuda);
			/* 
				 A ese JMenu le agrego los items que tendrá
			 		[ Ayuda ► ]
			 			|__ Ver
			 			|__ Acerca de Calculadora
			 */
			this.menuAyuda.add(this.itmAyudaVer);
			this.menuAyuda.add(this.itmAyudaAcerca);
			
			
		/* Por último le seteo el JMenuBar a esta ventana */
		this.setJMenuBar(this.barraMenu);
		
		/* Centro la ventana */
		this.setLocationRelativeTo(null);
		
		/* Llamo al metodo "programaEventos()" para asignarle eventos a cada uno de los JMenuItem */
		this.programaEventos();
		
		/* y la muestro */
		this.setVisible(true);

	}
	
	public void programaEventos() {
		/* 
		 	La forma de implementar la funcionalidad de los JMenuItem es identica a como lo hacian con JButton
		 	crean un listener y se lo asignan al JMenuItem
		 	
		 	Solo le asignaremos un listener a "itmAyudaAcerca" y cuando lo presionemos desplegara un mensaje de alerta
		 */
		ActionListener ejemploA = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JOptionPane.showMessageDialog(null,"Presionaste el JMenuItem Acerca de");
			}	
		};
		this.itmAyudaAcerca.addActionListener(ejemploA);
	}
}

Descargar Codigo de Fuente:
http://estebanfuentealba.net/ayudantia/EjemploJMenuBar.rar

Con eso ya tendrian una ventana con un menu , solo implementé un JMenuItem … el Acerca de , si lo presionan debería Mostrar una alerta por pantalla.

Saludos!

Categorías:Java Etiquetas: , , , , ,
  1. jeyson
    septiembre 25, 2012 a las 1:45 am

    hola amigo puedes postear de nuevo el link de descarga de tu munu es que yo estube intentando realizar tu menu y pues no me a funcionado, me puedes ayudar con el archivo — gracias amigo

  1. noviembre 6, 2009 a las 8:54 pm

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: