viernes, 27 de julio de 2007

Menús

El manejo de los menús en Swing se realiza por medio de las clases JMenu, JMenuBar, JCheckBoxMenuItem, JMenuItem, JRadioMenuItem y JPopupMenu. De la misma forma es necesario iniciar con el manejo de los Actions para poder reutilizar eventos a travez del sistema.

Para crear un menú regular necesitamos un objeto JFrame o JInternalFrame para poner en el el menú. Primeramente agregamos un elemento JMenuBar para poder pegar ahi el menú y dentro de el elementos JMenu, y JMenuItem o una de sus subclases en el interior.


JFrame ventana = new JFrame("Ejemplo de menus");

JMenuBar barra = new JMenuBar();
//Ponemos el menu en Vertical
barra.add(Box.createVerticalGlue());

JMenu archivo = new JMenu("Archivo");
JMenuItem guardar = new JMenuItem("Guardar");
archivo.add(archivo);
archivo.addSeparator();

ventana.setMenuBar(barra);


Bueno, esta es la teoría general de los menús, cada uno de los menús puede personalizarse en base a Actions, los actions son elementos que definen como se realiza un determinado proceso, le asignan un nombre y una imagen, lo que lo hace facilmente reutilizable en otros entornos; en este caso hablamos de un patron conocido como Comand, donde el elemento action define como se realiza una operación y puede ser establecido en multiples elementos sin problemas, por ejemplo un botón, un elémento de menú, un espacio de una barra de herramientas etc.

Para crear Actions generalmente se extiende la clase AbstractAction de una manera mas o menos así:


class SalirAction extends AbstractAtion {
public SalirAction(ImageIcon imagen) {
super("Texto", imagen);
}

public static void actionPerformed(ActionEvent ae) {
System.exit(0);
}
}

Action salir = new SalirAction(imagen);
JButton btnSalir = new JButton(salir);
JMenuItem mnuSalir = new JMenuItem(salir);


Con este modelo tanto el boton como el menu comparten el mismo texto y el mismo funcionamiento, lo que hace más fácil reutilizar esta funcionalidad en el sistema. Pero la reutilización de un Action va un poco mas alla, cuando utilizamos un action este establece más propiedades que puden visualizarse en otro elementos. Esto suele establecerse en el constructor de la clase Action por medio del método putValue(clave, valor).


public SalirAction(ImageIcon imagen) {
super("Texto", imagen);

putValue(SHORT_DESCRIPTION, "Tool Tip Text del control que contenga al action");
putValue(NAME, "Nombre del Action");
//Estableces la acción en respuesta a CTRL + A
putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK));
putValue(LONG_DESCRIPTION_KEY, "Descripción larga");
putValue(LARGE_ICON_KEY, imagenGrande);
putValue(SMALL_ICON, imagenChica);
//Establece el nemonico del action a N
putValue(MNEMONIC_KEY, new Integer(KeyEvent.VK_N));
//Se establece el estado seleccionado del action
putValue(SELECTED_KEY, Boolean.TRUE);
}


Dependiendo del tipo de control del que se este hablando podemos reutilizar las funcionalidades de las claves anteriores.

2 comentarios:

Geovanny Fonseca Mejía dijo...

Saludos, estoy comenzando con el desarrollo de una aplicación de escritorio, anteriormente he desarrollado pero solo aplicaciones Web.
Me podrias explicar como programar un formulario principal y dentro de este con las opciones del menú abrir otros formularios.

yanmaneee dijo...

curry 6
golden gooses outlet
golden goose superstar
nike air max 2018
ultra boost
moncler coat
louboutin outlet
air max 2018
nike shoes
timberland shoes