Você está na página 1de 17

Universidad los Ángeles de Chimbote

Facultad de Ingeniería
Escuela Profesional de Ingeniería de Sistemas Asignatura: Programación Visual

OBJETOS MENUS JRADIOBUTTONMENUITEM,


JSEPARATOR y JMENU

Menus desplegables
Una barra de menú contiene uno o más menús, y tiene una posición dependiente de la
plataforma -- normalmente debajo de la parte superior de la ventana. Un menú
desplegable es un menú que es invisible hasta que el usuario hace una acción del ratón
específica de la plataforma, como pulsar el botón derecho del ratón sobre un componente.
Entonces el menú desplegable aparece bajo el cursor.

Crear y congifurar Barras de Menú


Métodos:
● JMenuBar(): Crea una barra de Menú.
● setJMenuBar(): Selecciona la barra de menú de un Frame interno.
● getJMenuBar(): Obtiene la barra de menú de un Frame interno

Elaborado por: Ing. Martín Gustavo Salcedo Quiñones 1


Universidad los Ángeles de Chimbote
Facultad de Ingeniería
Escuela Profesional de Ingeniería de Sistemas Asignatura: Programación Visual

Crear y rellenar Menús


Métodos:
● Jmenu(): Crea un Menú a partir de una opción de la barra.
● add(JMenuItem): Crea un ítem de menú al final del menú.
● insert(): Inserta un ítem de menú o un separador de menú, en la posición
especificada.
● Remove():Elimina el ítem o ítems especificados del menú. Si el argumento es un
esntero, especifica la posición del ítem a eliminar.
● AddSeparator(): Añade un separador al final del menú desplegable.

Implementar Items de Menú


Métodos:
● JMenuItem(): Crea un ítem en un menú normal.
● JCheckBoxMenuItem: Crea un ítem de menú que se parece y actúa como un
checkbox.
● JRadioButtonMenuItem: Crea un ítem de menú que se parece y actúa como un
radio buttom. Se puede hacer uso de un ícono.
● setEnabled(): Si el argumento es true, activa el ítem de menú, si es false lo
desactiva.

Uso de la clase RadioButton


Los Botones de Radio son grupos de botones en los que, por convención, sólo uno de
ellos puede estar seleccionado. Swing soporta botones de radio con las clases
JRadioButton y ButtonGroup. Para poner un botón de radio en un menú, se utiliza la
clase JRadioButtonMenuItem. Los botones de radio tienen un aspecto similar a los
checkboxes, pero, por convención, los checkboxes no tienen límites sobre cuantos ítems
pueden estar seleccionados a la vez. Como JRadioButton desciende de
AbstractButton, los botones de radio Swing tienen todas las caracterísitcas de los
botones normales.
Aquí podemos ver una imagen de una aplicación que utiliza cinco botones de radio para
elegir qué tipo de mascota mostrar:

Elaborado por: Ing. Martín Gustavo Salcedo Quiñones 2


Universidad los Ángeles de Chimbote
Facultad de Ingeniería
Escuela Profesional de Ingeniería de Sistemas Asignatura: Programación Visual

Uso de la clase CheckBox


La versión Swing soporta botones checkbox con la clase JCheckBox, Swing también
soporta checkboxes en menús, utilizando la clase JCheckBoxMenuItem. Como
JCheckBox y JCheckBoxMenuItem descienden de AbstractButton, los checkboxes de
Swing tienen todas las características de un botón normal

Adicionar items dentro de los ítems


En la sesión anterior (Tema 10), estuvimos desarrollando el diseño de un menú que quedó
su panel de inspector de la siguiente manera:

Ahora vamos a construir un tercer menú algo más complejo. La aplicación una vez
terminado deberá tener la siguientes formas:

Elaborado por: Ing. Martín Gustavo Salcedo Quiñones 3


Universidad los Ángeles de Chimbote
Facultad de Ingeniería
Escuela Profesional de Ingeniería de Sistemas Asignatura: Programación Visual

Elaborado por: Ing. Martín Gustavo Salcedo Quiñones 4


Universidad los Ángeles de Chimbote
Facultad de Ingeniería
Escuela Profesional de Ingeniería de Sistemas Asignatura: Programación Visual

Y el panel Inspector debe adoptar la siguiente forma:

Elaborado por: Ing. Martín Gustavo Salcedo Quiñones 5


Universidad los Ángeles de Chimbote
Facultad de Ingeniería
Escuela Profesional de Ingeniería de Sistemas Asignatura: Programación Visual

Para lograr esto es necesario adicionar dentro de los JMenu más JMenus. Sólo los
últimos para adicionar en cada rama del árbol del panel Inspector serán los JMenuItem.
Repetir el paso Anterior para que la aplicación una vez ejecutada adopte la siguiente
forma:

Y el panel Inspector se encuentre en el siguiente estado:

Elaborado por: Ing. Martín Gustavo Salcedo Quiñones 6


Universidad los Ángeles de Chimbote
Facultad de Ingeniería
Escuela Profesional de Ingeniería de Sistemas Asignatura: Programación Visual

Aplicación 1
Vamos a construir una aplicación que permita diseñar una barra de menu, siendo la
opción principal (construído a partir de un objeto JMenu) llamada “Objetos de Control”. A
partir de ésta opción creas items usando JMenuItems para las opciones: “Tarea 2”,
“Tarea3”, “Tarea4”, Tarea 5” y “Tarea 6”. Para la opción “Tarea 2” defines cuatro ítems que
indiquen: “Ventas de Camisas”, “Ventas de Computadoras”, “Conversiones” y “Cálculo”.
La tarea 2 contiene la formulación de cuatro aplicaciones. Una vez diseñado el menú
debemos proceder a programar para que sean invocados o ejecutados desde la opción
(ítem) del menú.

Solución:
1. Creamos un proyecto denominado MenusObjetos. Luego, seleccionamos el
paquete menusobjetos y dando click botón derecho del mouse en la opción New
(Nuevo) seleccionamos Formulario Jframe.

Elaborado por: Ing. Martín Gustavo Salcedo Quiñones 7


Universidad los Ángeles de Chimbote
Facultad de Ingeniería
Escuela Profesional de Ingeniería de Sistemas Asignatura: Programación Visual

Indicamos como nombre del formulario frmMenu y luego damos click en Terminar
o Finish.

2. Estando en el entorno de desarrollo de NetBeans, en el panel de Inspector


seleccionamos JFrame y damos click botón derecho del mouse seleccionamos
Agregar desde paleta, luego Swing y posteriormente JmenuBar.

3. Se crear una barra de Menú con una primera opción del tipo Jmenu. Procedemos a
renombrarlo con JMenuObjetosControl y cambiarle el texto como “Objetos de
Control” y posteriormente creamos un JmenuItem.

Elaborado por: Ing. Martín Gustavo Salcedo Quiñones 8


Universidad los Ángeles de Chimbote
Facultad de Ingeniería
Escuela Profesional de Ingeniería de Sistemas Asignatura: Programación Visual

4. Debemos crear 5 del tipo JMenu dentro de jMenuObjetosControl. Según el


enunciado del ejercicio son 5 opciones: “Tarea 2”, “Tarea 3”, “Tarea 4”, “Tarea 5” y
“Tarea 6”. Procedemos a colocar los textos a cada opción en la propiedad Text y
renombramos a cada objeto JMenu. En el panel Inspector ubicado al lado
izquierdo del diseño del formulario debe quedar de la siguiente manera:

Elaborado por: Ing. Martín Gustavo Salcedo Quiñones 9


Universidad los Ángeles de Chimbote
Facultad de Ingeniería
Escuela Profesional de Ingeniería de Sistemas Asignatura: Programación Visual

5. Si procedemos a ejecutar el formulario frmMenu debe tener la siguiente apariencia:

6. Volviendo al entorno de NetBeans debemos crear los 4 items del tipo JMenuItem
dentro de la opción JMenuTarea2. En el panel Inspector debe quedar de la
siguiente manera:

Elaborado por: Ing. Martín Gustavo Salcedo Quiñones 10


Universidad los Ángeles de Chimbote
Facultad de Ingeniería
Escuela Profesional de Ingeniería de Sistemas Asignatura: Programación Visual

7. Si procedemos nuevamente a ejecutar el formulario frmMenu debe tener la


siguiente apariencia:

8. Volviendo nuevamente al entorno de NetBeans debemos crear los 4 item objetos


del tipo Jframe, uno para cada opción o aplicación de la opción de JMenuTarea 2.

9. Una vez programado en cada formulario las aplicaciones propuestas en la Tarea 2,


debemos invocar o ejecutar al momento de seleccionar la opción dentro del menú.
Para ello es necesario agregar programación en frmMenu. Por ejemplo si
queremos ejecutar el formulario referido a Venta de Camisas cuyo formulario se
denomina frmCamisas, tendríamos que seleccionar el objeto JMenuItem
correspondiente para indicar el evento a programar.

Elaborado por: Ing. Martín Gustavo Salcedo Quiñones 11


Universidad los Ángeles de Chimbote
Facultad de Ingeniería
Escuela Profesional de Ingeniería de Sistemas Asignatura: Programación Visual

10. A continuación, debemos colocar la siguiente línea de programación:

Instanciamos con new un objeto del tipo frmCamisas() y procedemos a mostrarlo


con el método setVisible(true).

11. Debemos tener presente que un formulario cuando es invovado desde un menú al
momento de ser cerrado a través de un botón de comando que puede llamarse
Cerrar o Salir ya no deberíamos usar el método dispose(), sino más bien hide().
Este método hide() solo oculta el formulario actual y no cierra al formulario que
contiene el menú. Además es necesario establecer los valores de los métodos
setSize() y setLocation() del JFrame para hacer que la ejecución de los
formularios al momento de ser visualizados sea la más adecuada.

Aplicación 2
Vamos hacer uso de los objetos JRadioButtonMenuItem y JcheckBoxMenuItem. En esta
oportunidad la aplicación será desarrollada usando pura programación.

Solución:
1. Procedemos a crear un archivo de extensión java. Estando en un proyecto
MenuObjetos y seleccionado el paquete munuobjetos, damos click botón derecho
del mouese y seleccionamos Java class.

Elaborado por: Ing. Martín Gustavo Salcedo Quiñones 12


Universidad los Ángeles de Chimbote
Facultad de Ingeniería
Escuela Profesional de Ingeniería de Sistemas Asignatura: Programación Visual

2. Aparece la ventana para definir el nombre del archivo de extensión java. Vamos a
denominarlo PruebaMenu.

Luego damos click en el bot{on de comando Terminar (Finish)

3. Agregamos los paquetes siguientes (debajo del package menusobjetos).

Elaborado por: Ing. Martín Gustavo Salcedo Quiñones 13


Universidad los Ángeles de Chimbote
Facultad de Ingeniería
Escuela Profesional de Ingeniería de Sistemas Asignatura: Programación Visual

4. Agregamos la expresión extends JFrame en public class PruebaMenu.

5. Vamos a proceder a agregar la programación, fijémonos en los comentarios


colocados con // que nos permitirán comprender el código de la programación.
public class PruebaMenu extends JFrame{
//definimos los atributos de la clase PruebaMenu
private final Color valoresColor[]={Color.black,Color.blue,Color.red,Color.green };
private JRadioButtonMenuItem elementosColor[], tiposLetra[];
private JCheckBoxMenuItem elementosEstilo[];
private JLabel pantallaEtiqueta;
private ButtonGroup grupoTiposLetra, grupoColores;
private int estilo;
/** Creates a new instance of PruebaMenu */
public PruebaMenu()
{
// establece el titulo del formulario
super( "Uso de objetos JMenu" );

// establecer menú Archivo y sus elementos de menú


JMenu menuArchivo = new JMenu( "Archivo" );
menuArchivo.setMnemonic( 'A' );

// establecer elemento de menú Acerca de...


JMenuItem elementoAcerca = new JMenuItem( "Acerca de..." );
elementoAcerca.setMnemonic( 'c' );
menuArchivo.add( elementoAcerca );
elementoAcerca.addActionListener(

new ActionListener() { // clase interna anónima

// mostrar cuadro de diálogo de mensaje cuando el usuario seleccione Acerca de...


public void actionPerformed( ActionEvent evento )
{
JOptionPane.showMessageDialog( PruebaMenu.this,
"Éste es un ejemplo\ndel uso de menús",
"Acerca de", JOptionPane.PLAIN_MESSAGE );
}

} // fin de la clase interna anónima

); // fin de la llamada a addActionListener

// establecer elemento de menú Salir


JMenuItem elementoSalir = new JMenuItem( "Salir" );
elementoSalir.setMnemonic( 'S' );
menuArchivo.add( elementoSalir );
elementoSalir.addActionListener(

new ActionListener() { // clase interna anónima

// terminar la aplicación cuando el usuario haga clic en elementoSalir


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

} // fin de la clase interna anónima

); // fin de la llamada a addActionListener

Elaborado por: Ing. Martín Gustavo Salcedo Quiñones 14


Universidad los Ángeles de Chimbote
Facultad de Ingeniería
Escuela Profesional de Ingeniería de Sistemas Asignatura: Programación Visual

// crear barra de menús y adjuntarla a la ventana PruebaMenu


JMenuBar barra = new JMenuBar();
setJMenuBar( barra );
barra.add( menuArchivo );

// crear menú Formato, con sus submenús y elementos de menú


JMenu menuFormato = new JMenu( "Formato" );
menuFormato.setMnemonic( 'F' );

// crear submenú Color


String colores[] = { "Negro", "Azul", "Rojo", "Verde" };

JMenu menuColor = new JMenu( "Color" );


menuColor.setMnemonic( 'C' );

elementosColor = new JRadioButtonMenuItem[ colores.length ];


grupoColores = new ButtonGroup();
ManejadorEventos manejadorEventos = new ManejadorEventos();

// crear elementos de menú tipo botones de opción para el menú Color


for ( int cuenta = 0; cuenta < colores.length; cuenta++ ) {
elementosColor[ cuenta ] = new JRadioButtonMenuItem( colores[ cuenta ] );
menuColor.add( elementosColor[ cuenta ] );
grupoColores.add( elementosColor[ cuenta ] );
elementosColor[ cuenta ].addActionListener( manejadorEventos );
}

// seleccionar primer elemento del menú Color


elementosColor[ 0 ].setSelected( true );

// agregar el menú Formato a la barra de menús


menuFormato.add( menuColor );
menuFormato.addSeparator();

// crear submenú Tipo de letra


String nombresTiposLetra[] = { "Serif", "Monospaced", "SansSerif" };

JMenu menuTiposLetra = new JMenu( "Tipo de letra" );


menuTiposLetra.setMnemonic( 'T' );

tiposLetra = new JRadioButtonMenuItem[ nombresTiposLetra.length ];


grupoTiposLetra = new ButtonGroup();

// crear elementos de menú tipo botones de opción para el menú Tipos de letra
for ( int cuenta = 0; cuenta < tiposLetra.length; cuenta++ ) {
tiposLetra[ cuenta ] = new JRadioButtonMenuItem( nombresTiposLetra[ cuenta ] );
menuTiposLetra.add( tiposLetra[ cuenta ] );
grupoTiposLetra.add( tiposLetra[ cuenta ] );
tiposLetra[ cuenta ].addActionListener( manejadorEventos );
}

// seleccionar el primer elemento del menú Tipo de letra


tiposLetra[ 0 ].setSelected( true );

menuTiposLetra.addSeparator();

// establecer elementos del menú Estilo


String nombresEstilo[] = { "Negrita", "Cursiva" };

elementosEstilo = new JCheckBoxMenuItem[ nombresEstilo.length ];


ManejadorEstilo manejadorEstilo = new ManejadorEstilo();

// crear elementos de menú tipo casilla de verificación para el menú Estilo


for ( int cuenta = 0; cuenta < nombresEstilo.length; cuenta++ ) {
elementosEstilo[ cuenta ] =
new JCheckBoxMenuItem( nombresEstilo[ cuenta ] );
menuTiposLetra.add( elementosEstilo[ cuenta ] );
elementosEstilo[ cuenta ].addItemListener( manejadorEstilo );
}

Elaborado por: Ing. Martín Gustavo Salcedo Quiñones 15


Universidad los Ángeles de Chimbote
Facultad de Ingeniería
Escuela Profesional de Ingeniería de Sistemas Asignatura: Programación Visual

// colocar menú Tipo de letra en el menú Formato


menuFormato.add( menuTiposLetra );

// agregar menú Formato a la barra de menús


barra.add( menuFormato );

// establecer etiqueta para mostrar texto


pantallaEtiqueta = new JLabel( "Programación Visual", SwingConstants.CENTER );
pantallaEtiqueta.setForeground( valoresColor[ 0 ] );
pantallaEtiqueta.setFont( new Font( "Serif", Font.PLAIN, 72 ) );

getContentPane().setBackground( Color.CYAN );
getContentPane().add( pantallaEtiqueta, BorderLayout.CENTER );

setSize( 850, 200 );


setVisible( true );

public static void main( String args[] )


{
JFrame.setDefaultLookAndFeelDecorated(true);
PruebaMenu aplicacion = new PruebaMenu();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}

// clase interna para manejar eventos de acción de los elementos de menú


private class ManejadorEventos implements ActionListener {

// procesar selecciones de color y tipo de letra


public void actionPerformed( ActionEvent evento )
{
// procesar selección de color
for ( int cuenta = 0; cuenta < elementosColor.length; cuenta++ )

if ( elementosColor[ cuenta ].isSelected() ) {


pantallaEtiqueta.setForeground( valoresColor[ cuenta ] );
break;
}

// procesar selección de tipo de letra


for ( int cuenta = 0; cuenta < tiposLetra.length; cuenta++ )

if ( evento.getSource() == tiposLetra[ cuenta ] ) {


pantallaEtiqueta.setFont(new Font( tiposLetra[ cuenta ].getText(), estilo, 72 ) );
break;
}

repaint();

} // fin del método actionPerformed

} // fin de la clase ManejadorEventos

// clase interna para manejar eventos de los elementos de menú tipo casilla de verificación
private class ManejadorEstilo implements ItemListener {

// procesar selecciones de estilo de tipo de letra


public void itemStateChanged( ItemEvent e )
{
estilo = 0;

// checar selección de negrita


if ( elementosEstilo[ 0 ].isSelected() )
estilo += Font.BOLD;

// checar selección de cursiva


if ( elementosEstilo[ 1 ].isSelected() )
estilo += Font.ITALIC;

pantallaEtiqueta.setFont(

Elaborado por: Ing. Martín Gustavo Salcedo Quiñones 16


Universidad los Ángeles de Chimbote
Facultad de Ingeniería
Escuela Profesional de Ingeniería de Sistemas Asignatura: Programación Visual

new Font( pantallaEtiqueta.getFont().getName(), estilo, 72 ) );

repaint();
}

} // fin de la clase ManejadorEstilo

} // fin de la clase PruebaMenu

6. Ejecutmos el archivo PruebaMenu.java.

7. Ordenado la ejecución veremos la siguiente ventana.

Damos por terminado la segunda unidad de aprendizaje.

Elaborado por: Ing. Martín Gustavo Salcedo Quiñones 17

Você também pode gostar