lunes, 9 de septiembre de 2019


INDICE



sábado, 14 de julio de 2012

Actividades 2.1.2 Otros Eventos


Objetivo específico de aprendizaje
Entender el uso de otro tipo de eventos diferentes a los causados por un botón.


Duración de la actividad
Producto a entregar
Forma de entrega
4.5 horasComo resultado de la actividad el alumno:
-         Entenderá la manera en la que se utilizan los eventos de otro tipo de elementos de interfaz gráfica diferente a un botón, como un deslizador, el ratón, etc.
-         Aplicará el uso de eventos diferentes a los del botón para soluciones que requieran de ellos.
Por plataforma

Actividad previaRecursos de apoyo
Eventos de botónUnidad 1. Tema 2.
Eventos de Otros Elementos Gráficos


Descripción de la actividad
  1. Hacer la lectura definida de Eventos de Otros Elementos Gráficos.
  2. Utilizar los ejemplos de la lectura, compílalos y ejecútalos.
  3. En la clase Color existe un constructor que utiliza 3 números enteros para crear un color, como se muestra:
Utiliza este constructor para que se pueda crear un objeto de la clase Color y este se pueda utilizar para definir el color de un rectángulo con relleno que sea dibujado dentro del applet en el método paint().
g.setColor ( new Color (deslizador1, deslizador2, deslizador3)  ) ;
Definiendo para cada parámetro el valor que se tome de un deslizador (teniendo 3 deslizadores de barra), como se muestra en el applet.
Una vez dibujado el rectángulo con el color definido por los deslizadores, vuelve a poner el color en negro para dibujar los valores de los deslizadores:    g.setColor (Color.black);
  El applet deberá presentar algo parecido a lo siguiente (se muestran varios ejemplos):




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();
}
}

5.4.1. Menus

Menú
El uso de menús es una manera sencilla de ahorrar espacio permitiendo al usuario de una manera elegante seleccionar una de varias opciones.
Un menú aparece como una barra de menús o como un menú desplegable.
Una barra de menú contiene uno o más menús y por lo general se encuentra en la parte superior de la ventana.
Un menú del tipo desplegable por lo general es invisible hasta que se realice una acción como por ejemplo presionar el botón derecho del ratón. Este tipo de menús aparecen justo debajo del cursor.
El concepto de menús es implementado en Java utilizando la siguientes clases:MenuBar, Menu y MenuItem.
En general, la barra de menús contiene uno o más objetos de tipo Menu. Cada objeto de tipo Menu, contiene una lista de MenuItem. Cada objeto MenuItem representa algo que puede ser seleccionado por el usuario. Por la forma en la que están definidas estas clases es posible crear submenús.
Si en una aplicación se desea añadir un menú se deben realizar las siguientes acciones en el orden que se muestra:
  • Crear los objetos de tipo MenuItem
  • Crear los objetos menú y pegarles los MenuItem
  • Crear un MenuBar y pegarle los Menús.
Creación de menús
Un Applet que desee tener un menú, debe crear un Frame en primer lugar.
public class ejemplo1 extends Frame {
Para crear una barra de menú es necesario crear una instancia de MenuBar a la cual se le agregarán los diferentes menús.
// Crear la barra de menú
MenuBar miBarra;
miBarra = new MenuBar();
Ya teniendo la barra se puede proceder a crear los menús que ésta tendrá. Por ejemplo si se desea que el primer menú de la barra se llame “Ayuda” se deben realizar las siguientes instrucciones:
// Crear el primer elemento de la barra
Menu miMenu;
miMenu = new Menu( "Ayuda" );
Observe que el constructor de la clase Menu requiere como argumento un String con el nombre del menú.
Cada menú puede contener a su vez otros menús. Para establecer cada opción del menú se debe a su vez crearlos y agregarlos.
Las siguientes líneas de código ejemplifican la forma de crear un menú de nombre “Opcion1” con las opciones “Primero” y “Segundo”.
//Crear y Agregar la primer 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 );

Observe que el método add se utiliza para agregar los elementos del menú. Las instrucciones anteriores se pueden repetir para cada una de las opciones del menú de la barra.

Finalmente, se debe agregar el menú creado con sus elementos a la barra y establecer la barra en la ventana como por ejemplo:

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

La siguiente aplicación reúne todo lo anterior y permite mostrar una ventana con menús como la siguiente:



import java.awt.*;

public class ejemplo1 extends Frame {
//Constructor de la clase
public ejemplo1 () {
// 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 primer 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( "primero" ) );
opcion2.add( new MenuItem( "segundo" ) );
miMenu.add( opcion2 );
//Agregar el primer elemento a la barra de menú
miBarra.add( miMenu );
//Colocar la barra
setMenuBar( miBarra );
}

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

Línea separadora

Es común ver entre las opciones del menú una línea que separa algunas de las opciones de otras. Como en la siguiente imagen se puede ver una línea divisoria entre la “Opción1” y la “Opción2”.




Para agregar la línea divisoria se emplea el método addSeparator aplicado al objeto menú dentro del que se colocará la línea.

miMenu.addSeparator();

La instrucción debe ser colocada antes de la creación de la opción sobre la cual debe aparecer.