You are on page 1of 14

Generacin y Propagacin de Eventos

Tutorial creado por Agustn Froufe . Extraido de: http://www.publispain.com/supertutoriales/ 08 Mayo 2007
Inscrbete. Cursos Nuevos Cursos de 3d, Web, Autocad, Excel, Aprende lo ltimo en Software y mas www.d4reality.com/Cuernavaca Anuncios Google
< anterior

| 1 .. 106 107 108 109 110 .. 194 | siguiente >

"" Tomemos el applet, EventosPro.java, que aparece en la figura siguiente. Consta de dos instancias de la clase Button, embebidas dentro de una instancia de la clase Panel. Esta instancia est a su vez embebida dentro de otra instancia de la clase Panel. Esta ltima instancia de la clase Panel est situada junto a una instancia de la clase TextArea, y ambas estn embebidas dentro de una instancia de la clase Applet.

La figura siguiente presenta los elementos que conforman este applet en forma de rbol, con el TextArea y Button como hojas y la instancia de Applet como raiz.

Cuando un usuario interacta con el applet, el sistema Java crea una instancia de la clase Event y rellena sus datos miembro con la informacin necesaria para describir la accin. Es en ese momento cuando el sistema Java permite al applet controlar el evento. Este control comienza por el Componente que recibe inicialmente el evento (por ejemplo, el botn que ha sido pulsado) y se desplaza hacia arriba en el rbol de Componentes, componente a componente, hasta que alcanza al Contenedor de la raz del rbol. Durante este camino, cada Componente tiene oportunidad de ignorar el evento o reaccionar ante l en una (o ms) de las forma siguientes:

o o o

Modificar los datos miembros de la instancia de Event Entrar en accin y realizar clculos basados en la informacin contenida en el evento Indicar al sistema Java que el evento no debera propagarse ms arriba en el rbol

El sistema Java pasa informacin del evento a un Componente a travs del mtodo handleEvent() del Componente. Todos los mtodos handleEvent() deben ser de la forma:

public boolean handleEvent( Event evt )

Un controlador de eventos solamente necesita una informacin: una referencia a la instancia de la clase Event que contiene la informacin del evento que se ha producido.

El valor devuelto por el mtodo handleEvent() es importante. Indica al sistema Java si el evento ha sido o no completamente controlado por el controlador. Un valor true indica que el evento ha sido controlado y que su propagacin debe detenerse. Un valor false indica que el evento ha sido ignorado, o que no ha sido controlado en su totalidad y debe continuar su propagacin hacia arriba en el rbol de Componentes.

Veamos la descripcin de una accin con el applet de la figura anterior. El usuario pulsa el botn "Uno". El sistema run-time del lenguaje Java capturar la informacin sobre el evento (el nmero de clicks, la

localizacin del click, la hora en que se ha producido la pulsacin y el Componente que ha recibido el click) y empaqueta todos esos datos en una instancia de la clase Event. El sistema Java comienza entonces por el Componente que ha sido pulsado (en este caso, el botn "Uno") y, a travs de una llamada al mtodo handleEvent() del Componente, ofrece a ste la posibilidad de reaccionar ante el evento. Si el Componente no controla el evento, o no lo hace completamente (indicado por un valor de retorno false), el sistema Java presentar la instancia de Event al siguiente Componente por encima en el rbol (en este caso, una instancia de la clase Panel). El sistema Java contina de este mismo modo hasta que el evento es controlado en su totalidad o ya no hay Componentes a los que informar. En la figura siguiente mostramos el camino recorrido por el evento en su intento de que algn Componente lo controle.

Cada Componente del applet aade una lnea al objeto TextArea indicando que ha recibido un evento. Luego permite que el evento se propague al siguiente Componente.

El cdigo del controlador de eventos usado en el ejemplo es el que muestran las siguientes lneas:

public boolean handleEvent( Event evt) { if( evt.id == Event.ACTION_EVENT ) ta.appendText( "Panel " + str + " recibe action...\n" ); else if( evt.id == Event.MOUSE_DOWN ) ta.appendText( "Panel " + str + " recibe mouse_down...\n" );

return super.handleEvent( evt ); }


""

Tutorial de Java - Tipos de Eventos


107 - Tipos de Eventos

Tutorial creado por Agustn Froufe . Extraido de: http://www.publispain.com/supertutoriales/ 08 Mayo 2007
Escuela De Produccin Considerada La Mejor Del Mundo, La Academia De Cine NY, Entra Ya! www.nyfa.edu/Produccion Anuncios Google
< anterior | 1 .. 105 106 107 108 109 .. 194 | siguiente >

"" Los eventos se catalogan por su naturaleza, que se indicar en el miembro id de su estructura. Los grandes grupos de eventos son:

Eventos de Ventana

Son los que se generan en respuesta a los cambios de una ventana un frame o un dialogo.

o o o o o

WINDOW_DESTROY WINDOW_EXPOSE WINDOW_ICONIFY WINDOW_DEICONIFY WINDOW_MOVED

Eventos de Teclado

Son generados en respuesta a cuando el usuario pulsa y suelta una tecla mientras un Componente tiene el foco de entrada.

o o o o

KEY_PRESS KEY_RELEASE KEY_ACTION KEY_ACTION_RELEASE

Eventos de Ratn

Son los eventos generados por acciones sobre el ratn dentro de los lmites de un Componente.

o o o o o o

MOUSE_DOWN MOUSE_UP MOUSE_MOVE MOUSE_ENTER MOUSE_EXIT MOUSE_DRAG

Eventos de Barras

Son los eventos generados como respuesta a la manipulacin de barras de desplazamiento (scrollbars).

o o o o o

SCROLL_LINE_UP SCROLL_LINE_DOWN SCROLL_PAGE_UP SCROLL_PAGE_DOWN SCROLL_ABSOLUTE

Eventos de Lista

Son los eventos generados al seleccionar elementos de una lista.

o o

LIST_SELECT LIST_DESELECT

Eventos Varios

Son los eventos generados en funcin de diversas acciones.

o o o o o

ACTION_EVENT LOAD_FILE SAVE_FILE GOT_FOCUS LOST_FOCUS

El applet EventosPrnt.java est diseado para observar los eventos que se producen sobre l. Cada vez que se genera un evento, el applet responde imprimiendo el evento que ha capturado en la lnea de comandos desde donde se ha lanzado el applet.

Una vez que se haya compilado el cdigo y cargado el applet en el appletviewer o en un navegador con soporte Java, jugar un poco con el applet. Mover el cursor dentro del applet, picar con el ratn, picar y arrastrar, teclear algo, cambiar el tamao de la ventana y taparla y destaparla con otra. Las acciones anteriores harn que en la ventana en donde se haya lanzado el appletviewer, o en la consola Java en caso de Netscape, vayan apareciendo los textos que indican los eventos que est recibiendo el applet.

Lo cierto es que el uso de System.out.println() en un applet es algo que no debera utilizarse, e incluso puede llegar a no funcionar en algunos sistemas, pero tena la ventaja de ser la forma ms fcil de ver los eventos. No obstante, vamos a reescribir el cdigo del applet utilizando una Lista.

Una Lista es una lista de cadenas o Strings definidas en java.awt.List. Crearemos una lista de 25 lneas y no permitiremos seleccin mltiple, que son los dos parmetros que necesita el constructor del objeto List. El cdigo EventosList.java que se muestra a continuacin corresponde al anterior ejemplo un poco modificado.

import java.awt.*; import java.applet.Applet;

public class EventosList extends Applet { List lista;

public void init() { lista = new List( 25,false ); add( lista ); lista.addItem( "Evento init" ); }

public void start() { lista.addItem( "Evento start" ); }

public void destroy() { lista.addItem( "Evento destroy" ); }

public void paint( Graphics g ) { lista.addItem( "Evento paint" ); }

public void update( Graphics g ) { lista.addItem( "Evento update" ); }

public boolean mouseUp( Event evt,int x, int y ) { lista.addItem( "Evento mouseUp en ("+x+","+y+")" ); return false; }

public boolean mouseDown( Event evt,int x, int y ) { lista.addItem( "Evento mouseDown en ("+x+","+y+")" ); return false; }

public boolean mouseDrag( Event evt,int x, int y ) { lista.addItem( "Evento mouseDrag en ("+x+","+y+")" ); return false; }

public boolean mouseMove( Event evt,int x, int y ) { lista.addItem( "Evento mouseMove en ("+x+","+y+")" ); return false; }

public boolean mouseEnter( Event evt,int x, int y ) { lista.addItem( "Evento mouseEnter en ("+x+","+y+")" ); return false; }

public boolean mouseExit( Event evt,int x, int y ) { lista.addItem( "Evento mouseExit" ); return false; }

public boolean keyDown( Event evt,int x ) { lista.addItem( "Evento keyDown,carcter "+(char)x ); return true; }

public void getFocus() { lista.addItem( "Evento getFocus" ); }

public void gotFocus() { lista.addItem( "Evento gotFocus" ); }

public void lostFocus() {

lista.addItem( "Evento lostFocus" ); } }

El applet VisorEventos.java muestra los datos que componen cada evento que se produce. Hemos incorporado un botn y una lista, tal como se puede apreciar en la figura, para poder generar diferentes eventos.

Moviendo el ratn o actuando sobre los dos Componentes, botn y lista, podemos observar los datos que el sistema Java enva en la recoleccin de esos eventos.

106 - La clase Event

Tutorial creado por Agustn Froufe . Extraido de: http://www.publispain.com/supertutoriales/ 08 Mayo 2007
Aprende Contabilidad y Obtn tu Diploma sin salir de tu Casa, Fcil, Rpido y Econmico. InstitutoMaurer.com.mx Anuncios Google
< anterior | 1 .. 104 105 106 107 108 .. 194 | siguiente > Un contenedor //soltado// en un entorno grfico se convierte en rpido receptor de eventos de todo tipo, singularmente de los relacionados con el movimiento del ratn, pulsaciones de teclas, creacin/movimiento/destruccin de partes grficas y, por ltimo, los referidos a acciones del usuario respecto de componentes (eleccin de un men, pulsacin de un botn, etc.).

La clase Event es el jugador principal en el juego de los eventos. Intenta capturar las caractersticas fundamentales de todos los eventos que genera el usuario. Los datos miembro de la clase Event son los que se indican a continuacin: id - El tipo de evento que se ha producido target - Componente sobre el que se ha producido el evento x, y - Las coordenadas en donde se ha producido el evento relativas al Componente que actualmente est procesando ese evento. El origen se toma en la esquina superior izquierda del Componente key - Para eventos de teclado, es la tecla que se ha pulsado. Su valor ser el valor Unicode del carcter que representa la tecla. Otros valores que puede tomas son los de las teclas especiales como INICIO, FIN, F1, F2, etc. when - Instante en que se ha producido el evento modifiers - La combinacin aritmtica del estado en que se encuentran las teclas modificadoras Mays, Alt, Ctrl. clickCount - El nmero de clicks de ratn consecutivos. Slo tiene importancia en los eventos MOUSE_DOWN arg - Es un argumento dependiente del evento. Para objetos Button, este objeto //arg// es un objeto String que contiene la etiqueta de texto del botn evt - El siguiente evento en una lista encadenada de eventos Una instancia de la clase Event ser creada por el sistema Java cada vez que se genere un evento. Es posible, sin embargo, que un programa cree y enve eventos a los Componentes a travs de su mtodo //postEvent()//.

Tutorial de Java - Un Applet basico en Java


40 - Un Applet basico en Java

Tutorial creado por Agustn Froufe . Extraido de: http://www.publispain.com/supertutoriales/ 08 Mayo 2007
Inscrbete. Cursos Nuevos Cursos de 3d, Web, Autocad, Excel, Aprende lo ltimo en Software y mas www.d4reality.com/Cuernavaca Anuncios Google
< anterior

| 1 .. 38 39 40 41 42 .. 194 | siguiente >

Vamos a comenzar la creacin del cdigo fuente del un applet que satisfaga nuestras necesidades. Recordamos que Java utiliza la extensin .java para designar los ficheros fuente.

==== //HolaMundo// ==== A continuacin est el cdigo fuente del applet HolaMundo, que es la versin applet de la mnima aplicacin Java que antes habamos escrito. Guardar este cdigo en un fichero fuente Java como http://www.publispain.com/supertutoriales/diseno/java/cursos/3/Fuentes/Cap2/HolaMundo.java HolaMundo.java. // // Applet HolaMundo de ejemplo // import java.awt.Graphics; import java.applet.Applet; public class HolaMundo extends Applet { public void paint( Graphics g ) { g.drawString( "Hola Mundo!",25,25 ) ; } }

==== //Componentes bsicos de un Applet// ==== El lenguaje Java implementa un modelo de Programacin Orientada a Objetos. Los objetos sirven de bloques centrales de construccin de los programas Java. De la misma forma que otros lenguajes de programacin, Java tiene variables de estado y mtodos. Veamos como se descompone un applet en sus piezas/objetos: /* Seccin de importaciones */

public class NombreDelNuevoApplet extends Applet { /* Aqu se declaran las variables de estado (public y private) */ /* Los mtodos para la interaccin con los objetos se declaran y definen aqu */ public void MetodoUno( parmetros ) { /* Aqu viene para cada mtodo, el cdigo Java que desempea la tarea. Qu cdigo se use depende del applet */ } } Para HolaMundo, se importan las dos clases que necesita. No hay variables de estado, y slo se tiene que definir un mtodo para que el applet tenga el comportamiento esperado. //Clases incluidas// El comando ##import## carga otras clases dentro de nuestro cdigo fuente. El importar una clase desde un paquete de Java hace que esa clase importada est disponible para todo el cdigo incluido en el fichero fuente Java que la importa. Por ejemplo, en el applet HolaMundo se importa la clase //java.awt.Graphics//, y podremos llamar a los mtodos de esta clase desde cualquier mtodo de nuestro programa que se encuentre en el fichero //HolaMundo.java//. Esta clase define una rea grfica y mtodos para poder dibujar dentro de ella. La funcin //paint()// declara a ##g## como un objeto de tipo //Graphics//; luego, //paint()// usa el mtodo //drawString()// de la clase Graphics para generar su salida. //La clase Applet// Se puede crear una nueva clase, en este caso HolaMundo, extendiendo la clase bsica de Java: Applet. De esta forma, se hereda todo lo necesario para crear un applet. Modificando determinados mtodos del applet, podemos lograr que lleve a cabo las funciones que deseamos. import java.applet.Applet; ... public class HolaMundo extends Applet {

//Mtodos de Applet// La parte del applet a modificar es el mtodo //paint()//. En la clase Applet, se llama al mtodo paint() cada vez que el mtodo arranca o necesita ser refrescado, pero no hace nada. En nuestro caso, lo que hacemos es: public void paint( Graphics g ) { g.drawString( "Hola Mundo!",25,25 ); } De acuerdo a las normas de sobrecarga, se ejecutar este ltimo //paint()// y no el //paint()// vaco de la clase Applet. Luego, aqu se ejecuta el mtodo //drawString()//, que le dice al applet cmo debe aparecer un texto en el rea de dibujo. Otros mtodos bsicos para dibujar son: drawLine( int x1,int y1,int x2,int y2 ) drawRect( int x,int y,int ancho,int alto ) drawOval( int x,int y,int ancho,int alto )

Tanto para //drawRect()// como para //drawOval()//, las coordenadas (##x,y##) son la esquina superior izquierda del rectngulo (para drawOval, el valo es encajado en el rectngulo que lo circunscribe).

http://www.wikilearning.com/tutorial/tutorial_de_javageneracion_y_propagacion_de_eventos/3938-108 http://www.publispain.com/supertutoriales/diseno/java/cursos/3/Cap4/tipoev.html

You might also like