sábado, 14 de julio de 2012

5.4.2. Manejo de Eventos


Eventos
Cuando se ejecuta una aplicación que utiliza menús, al dar clic sobre las opciones del menú se generan eventos. Dichos eventos se manejan del mismo modo que los Botones y las Listas.
Para agregar el manejo de eventos a una aplicación que contiene menú se debe definir un método que reciba un evento del tipo Event:
public boolean handleEvent( Event evt ) {
Es importante verificar si el evento ocurrido es que el usuario cerró la ventana de la aplicación en cuyo caso se debe terminar el programa. Para ellos se pude hacer lo siguiente:
if( Event.WINDOW_DESTROY == evt.id && this == evt.target )
System.exit( 0 );
Ahora bien si el evento no fue cerrar la ventana se debe proceder a verificar si es probable que el evento procede de un menú. Cuando se da clic sobre una de las opciones del menú se genera el evento ACTION_EVENT de la clasejava.awt.MenuItem y evt.target es el que indica cuál fue la opción seleccionada; es por eso que se verifica si el evento generado es del tipo ACTION_EVENT:
switch( evt.id ) {
case Event.ACTION_EVENT:
{
Aún cuando se ha determinado que el evento es del tipo ACTION_EVENT se recomienda asegurar que el objeto evt.target es realmente un objeto MenuItem, es decir, que el evento procede de la barra de menús.
if( evt.target instanceof MenuItem ) {

La forma de verificar de cuál de las opciones del menú procede el evento es utilizando el método equals sobre el objeto que este caso es el nombre de la opción. En el siguiente ejemplo si se da clic sobre la opción “primero” se despliega en la consola el mensaje “Opcion –primero-“:

if( "primero".equals( evt.arg ) )
System.out.println( "Opcion -primero-" );
.Tomando en cuenta todo lo anterior el programa completo quedaría de la siguiente manera:
import java.awt.*;

public class eventos extends Frame {
//Constructor de la clase
public eventos () {
// Definir título de la ventana
setTitle( "Mi primer menú" );

// Crear la barra de menú
MenuBar miBarra;
miBarra = new MenuBar();

// Crear el primer elemento de la barra
Menu miMenu;
miMenu = new Menu( "Menu" );
//Crear y Agregar la primera opción del primer elemento de la barra
Menu opcion1;
opcion1 = new Menu( "Opcion1" );
opcion1.add( new MenuItem( "primero" ) );
opcion1.add( new MenuItem( "segundo" ) );
miMenu.add( opcion1 );

//Crear y Agregar la segunda opción del primer elemento de la barra
Menu opcion2;
opcion2 = new Menu( "Opcion2" );
opcion2.add( new MenuItem( "tercero" ) );
opcion2.add( new MenuItem( "cuarto" ) );
miMenu.add( opcion2 );

//Crear y Agregar la tercera opción del primer elemento de la barra
MenuItem opcion3;
opcion3 = new MenuItem( "Salir" );
miMenu.add(opcion3);

//Agregar el primer elemento a la barra de menú
miBarra.add( miMenu );
//Colocar la barra
setMenuBar( miBarra );
}

public boolean handleEvent( Event evt ) {
// Si la ventana se cerró salir de la aplicación
if( Event.WINDOW_DESTROY == evt.id && this == evt.target )
System.exit( 0 );

//Si el evento es del tipo ACTION_EVENT?
switch( evt.id ) {
case Event.ACTION_EVENT:
{

//Si el evento proviene de una opción el menú?
if( evt.target instanceof MenuItem )
{

if( "primero".equals( evt.arg ) )
System.out.println( "Opcion -primero-" );
if( "segundo".equals( evt.arg ) )
System.out.println( "Opcion -segundo-" );
if( "tercero".equals( evt.arg ) )
System.out.println( "Opcion -tercero-" );
if( "cuarto".equals( evt.arg ) )
System.out.println( "Opcion -cuarto-" );

//Si la opción seleccionada es Salir terminar la aplicación
if( "Salir".equals( evt.arg ) )
System.exit( 0 );
}
}
}
return true;
}

public static void main( String args[] ) {
Frame frame = new eventos();
frame.resize( 250,250 );
frame.show();
}
}

No hay comentarios:

Publicar un comentario