Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Capitulo17 Menus en Java

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 10

JAVA Capítulo 8

Menús en Java

Contenido: 
 
 
 
 
En  el  presente  capítulo  describiremos  la 
 
interfaz gráfica de usuario en Java.   
 
Empezaremos  hacer  aplicaciones  de  escritorio   
 
con Swing y AW.   
 
Lenguaje de Programación

www.zonajava.net

Objetivos:
• Comprender los contextos de gráficos y los objetos de gráficos.
• Comprender y manipular menús en java.
• Manejar eventos utilizando menús en java

1. Introducción
En la actual versión del AWT que se proporciona con el JDK, sólo se permite crear
menús a través de código, ya que Java todavía no dispone de un formato de recursos
y tampoco hay un diseñador como pueden ser AppStudio, Delphi o X-Designer;
aunque terminará habiendo uno, con seguridad.

No hay ningún método para diseñar una buena interface, todo depende del
programador. Los menús son el centro de la aplicación. La diferencia entre una
aplicación útil y otra que es totalmente frustrante radica en la organización de los
menús, pero eso, las reglas del diseño de un buen árbol de menús, no están claras.
Hay un montón de libros acerca de la ergonomía y de cómo se debe implementar la
interacción con el usuario. Lo cierto es que por cada uno que defienda una idea,
seguro que hay otro que defiende la contraria. Todavía no hay un acuerdo para crear
un estándar, con cada Window Manager se publica una guía de estilo diferente. Así
que, vamos a explicar lo básico, sin que se deba tomar como dogma de fe, para que
luego cada uno haga lo que mejor le parezca.

2. ¿Cómo se usa un menú en java?


Los menús tienen la función principal de darle al usuario el poder de elegir entre
varias opciones, también sirve para ahorrar espacio, entre los componentes más
utilizados están:

• combo boxes
• list
• radio buttons
• tool bars

El programador también tiene la opción de ponerle a los ítems de un menú o a un


botón, que realicen una acción, esto con el fin de crear una barra de herramientas,
utilizando los Actions y los manejadores de eventos. Ejemplos:

Ing. Raúl Enrique Fernández Bejarano Página 92


I.S.T.P. “Andrés A. Cáceres D.”

www.zonajava.net

Tabla 1. Algunos manejadores de eventos

MÉTODO DESCRIPCIÓN

"ActionListener" El usuario elige un ítem de menú


"WindowListener" El usuario elige un frame (ventana principal)
"MouseListener" El usuario pulsa un botón sobre un componente
"MouseMotionListener" El usuario mueve el cursor sobre un componente

Otra característica relevante de los menús es que son únicos y se caracterizan ya que
no se sitúan con otros componentes para su correcto funcionamiento, y en lugar de
esto aparecen como -una barra de menú - o - Un menú despegable.

3. ¿Cómo crear un menú?


A continuación se muestra el código de ejemplo de cómo se ve y crea un menú.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Ejemplo01 extends FrameBase {


JMenuBar menuBar;
JMenu menu, submenu;
JMenuItem menuItem;

public Ejemplo01(String title) {


super(title);
iniciarControles();
}

public static void main(String[] args) {


new Ejemplo01("Ejemplo de Menu Simple");
}

public void iniciarControles() {


menuBar = new JMenuBar();
this.setJMenuBar(menuBar);

menu = new JMenu("Archivo");


menuBar.add(menu);

menuItem = new JMenuItem("Documentos");


menu.add(menuItem);

menuItem = new JMenuItem("Configurar impresora",


new ImageIcon("../../Imagenes/print.gif"));

menu.add(menuItem);

menuItem = new JMenuItem(new


ImageIcon("../../Imagenes/middle.gif"));
menu.add(menuItem);

Ing. Raúl Enrique Fernández Bejarano Página 93


Lenguaje de Programación

www.zonajava.net

menu.addSeparator();
submenu = new JMenu("Listado");
menuItem = new JMenuItem("Clientes");
submenu.add(menuItem);

menuItem = new JMenuItem("Usuarios");


submenu.add(menuItem);
menu.add(submenu);

menu = new JMenu("Reporte");


menuBar.add(menu);

centrarVentana(450, 260);
this.setVisible(true);
}
}

4. Eventos en los menú


El Programador que utiliza un menú en java, tiene la opción de ponerle a un ítem una
función determinada, esto gracias a los eventos action, igual que se hace para un
JButton. Para los eventos también se puede utilizar un JRadioButtonMenuItem, un
Radio Buttons, o un JCheckBoxMenuItems con eventos de ítem y action.

5. Menús desplegables
Los menús desplegables tienen varios características entre ellas la de ahorrar
espacio, gracias a que cada menú puede tener un menú desplegable propio para
mostrar sus items. Cuando el menú se inicia, utiliza su menú despegable para mostrar
sus ítems, esto gracias a que cuando muestra y implementa la ventana que contiene
los ítems, se implementa una ventana nueva utilizando componentes tales como:
• JPanel
• Panel
• ventana (window)

Un consejo que les puedo dar para que su programa sea mejor, es que utilicen la ventanas
desplegables de peso ligero o sea las de JPanel ya que son las más eficientes.

6. Distribución de un Menú
Un programador también tiene la opción de distribuir el menú donde quiera ya que los
menús se hacen con componentes Swing, por ejemplo, podemos añadir cualquier
componente ligero a un JMenu o JMenuBar, o podemos cambiar el aspecto de un
menú cambiando de igualmanera el controlador de distribución,por ejemplo, podemos
cambiar el controlador de distribución de la barra de menú de un valor izquierda por
uno derecha, o también utilizar otros controladores como GridLayout o FlowLayout.

Ing. Raúl Enrique Fernández Bejarano Página 94


I.S.T.P. “Andrés A. Cáceres D.”

www.zonajava.net

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Ejemplo02 extends FrameBase {


JMenuBar menuBar;
JMenu menu;
JCheckBoxMenuItem cbMenuItem;
JRadioButtonMenuItem rbMenuItem;

public Ejemplo02(String title) {


super(title);
iniciarControles();
}

public static void main(String[] args) {


new Ejemplo02(
"Ejemplo de JRadioButtonMenuItem y JCheckBoxMenuItem");
}

public void iniciarControles() {


menuBar = new JMenuBar();
this.setJMenuBar(menuBar);
menu = new JMenu("Aributos de Texto");
menuBar.add(menu);

ButtonGroup grupo = new ButtonGroup();


rbMenuItem = new JRadioButtonMenuItem("Rojo");

rbMenuItem.setSelected(true);
grupo.add(rbMenuItem);
menu.add(rbMenuItem);
rbMenuItem = new JRadioButtonMenuItem("Verde");
grupo.add(rbMenuItem);
menu.add(rbMenuItem);

menu.addSeparator();
cbMenuItem = new JCheckBoxMenuItem("Negrita");
menu.add(cbMenuItem);
cbMenuItem = new JCheckBoxMenuItem("Cursiva");
menu.add(cbMenuItem);

centrarVentana(450, 260);
this.setVisible(true);
}
}

7. Métodos y constructoras de JMenu

7.1. Crear y configirar barras de menú


• JMenuBar()
• void setJMenuBar(JMenuBar)
• JMenuBar getJMenuBar() (en JApplet, JDialog, JFrame, JRootPane)
• void setMenuBar(JMenuBar)

Ing. Raúl Enrique Fernández Bejarano Página 95


Lenguaje de Programación

www.zonajava.net

• JMenuBar getMenuBar() (en JInternalFrame)

7.2. Crear y rellenar menús


• JMenu() Crea un menú
• JMenuItem add(JMenuItem)
• JMenuItem add(Action)
• void add(String)
• JMenuItem insert(JMenuItem, int)
• JMenuItem insert(Action, int)
• void insert(String, int)
• void insertSeparator(int)
• void remove(JMenuItem)
• void remove(int)
• void removeAll()

7.3. Crear y rellenar menús despegables


• JPopupMenu()
• JPopupMenu(String)
• JMenuItem add(JMenuItem)
• JMenuItem add(Action)
• void insert(Component, int) JMenuItem insert(Action, int)
• void remove(JMenuItem)
• void remove(int)
• void removeAll()
• void show(Component, int, int)

7.4. Implementar items de menu


• JMenuItem()
• JMenuItem(Icon)
• JMenuItem(String)
• JMenuItem(String, Icon)
• JMenuItem(String, int)
• JCheckBoxMenuItem()
• JCheckBoxMenuItem(Icon)
• JCheckBoxMenuItem(String)
• JCheckBoxMenuItem(String, Icon)
• JCheckBoxMenuItem(String, boolean)
• JCheckBoxMenuItem(String, Icon, boolean)
• JRadioButtonMenuItem()
• JRadioButtonMenuItem(Icon)
• JRadioButtonMenuItem(String)
• JRadioButtonMenuItem(String, Icon)

Ing. Raúl Enrique Fernández Bejarano Página 96


I.S.T.P. “Andrés A. Cáceres D.”

www.zonajava.net

• void setState(boolean)
• boolean getState()
• void addActionListener(ActionListener)
• void addItemListener(ItemListener)

8. Función de la imagen en un menú


A los componentes Swing, como JLabel y JButton, se les puede decorar con un ícono
en otras palabras una imagen. En estos Swing, los íconos son un elemento que se
pega al interface Icon con setIcon. Estos Swing proporcionan una implementación
muy útil del interface Icon, el denominado ImageIcon, que sitúa un ícono desde una
imagen JPEG o GIF, cualquier imagen que sea así dañen la estética del programa.

menuItem = new JMenuItem("Configurar impresora", new


ImageIcon("../../Imagenes/print.gif"));

Ejemplo01:
Realiza un programa que crea un menú de opciones, utilizando eventos.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Ejemplo03 extends FrameBase{


// variables para el dialogo de ingreso
JMenuBar JMenuBar1 = null;
JMenu JMenu1, JSubMenu1 = null;
JMenuItem JMenuItem1 = null;
JRadioButtonMenuItem rbMenuItem= null;
JLabel JLabel1 = null;

// Crear el objeto manejador Evento


MiReceptor ManejadorEvento = new MiReceptor();

private Ejemplo03(String titulo){


super(titulo);
iniciarControles();
}

private void iniciarControles(){


JLabel1 = new JLabel("Texto Muestra");
JLabel1.setBounds(20, 50, 500, 14);
JLabel1.setFont(new Font("Dialog", 0, 18));
this.getContentPane().add(JLabel1, null);

JMenuBar1 = new JMenuBar();


this.setJMenuBar(JMenuBar1);

JMenu1 = new JMenu("Atributos");


JMenuBar1.add(JMenu1);

JSubMenu1 = new JMenu("Colores");

Ing. Raúl Enrique Fernández Bejarano Página 97


Lenguaje de Programación

www.zonajava.net

ButtonGroup grupo = new ButtonGroup();

rbMenuItem = new JRadioButtonMenuItem("Rojo");


rbMenuItem.setSelected(true);
grupo.add(rbMenuItem);
rbMenuItem.addActionListener(ManejadorEvento);

JSubMenu1.add(rbMenuItem);

rbMenuItem = new JRadioButtonMenuItem("Blanco");


rbMenuItem.setSelected(true);
grupo.add(rbMenuItem);
rbMenuItem.addActionListener(ManejadorEvento);

JSubMenu1.add(rbMenuItem);

rbMenuItem = new JRadioButtonMenuItem("Azul");


rbMenuItem.setSelected(true);
grupo.add(rbMenuItem);
rbMenuItem.addActionListener(ManejadorEvento);

JSubMenu1.add(rbMenuItem);
JMenu1.add(JSubMenu1);

JMenu1.addSeparator();

JSubMenu1 = new JMenu("Fuente");


JMenuItem1 = new JMenuItem("Dialog");
JSubMenu1.add(JMenuItem1);
JMenuItem1.addActionListener(ManejadorEvento);

JMenuItem1 = new JMenuItem("SansSerif");


JSubMenu1.add(JMenuItem1);
JMenu1.add(JSubMenu1);
JMenuItem1.addActionListener(ManejadorEvento);

JMenuItem1 = new JMenuItem("Monospaced");


JMenuItem1.addActionListener(ManejadorEvento);

JSubMenu1.add(JMenuItem1);
JMenu1.add(JSubMenu1);

centrarVentana(450, 260);
this.setVisible(true);
}

public static void main(String args[]){


Ejemplo03 ventana = new Ejemplo03("Menus");
}

public class MiReceptor implements ActionListener{


public void actionPerformed(ActionEvent e) {
JMenuItem OrigenMenu = (JMenuItem)(e.getSource());
if (OrigenMenu.getText() == "Rojo"){
JLabel1.setForeground(Color.red);
}
if (OrigenMenu.getText() == "Blanco"){
JLabel1.setForeground(Color.white);

Ing. Raúl Enrique Fernández Bejarano Página 98


I.S.T.P. “Andrés A. Cáceres D.”

www.zonajava.net

}
if (OrigenMenu.getText() == "Azul"){
JLabel1.setForeground(Color.blue);
}

if (OrigenMenu.getText() == "Dialog"){
JLabel1.setFont(new Font("Dialog", 0, 18));
}

if (OrigenMenu.getText() == "SansSerif"){
JLabel1.setFont(new Font("SansSerif", 0, 18));
}

if (OrigenMenu.getText() == "Monospaced"){
JLabel1.setFont(new Font("Monospaced", 0, 18));

};
};
}

Ing. Raúl Enrique Fernández Bejarano Página 99

También podría gustarte