Generación y Propagación de Eventos

Tutorial creado por Agustín Froufe . Extraido de: http://www.publispain.com/supertutoriales/ 08 Mayo 2007
Inscríbete. 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 están 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.

Este control comienza por el Componente que recibe inicialmente el evento (por ejemplo. Durante este camino. Un valor false indica que el evento ha sido ignorado. cada Componente tiene oportunidad de ignorar el evento o reaccionar ante él en una (o más) de las forma siguientes: o o o Modificar los datos miembros de la instancia de Event Entrar en acción y realizar cálculos basados en la información contenida en el evento Indicar al sistema Java que el evento no debería propagarse más arriba en el árbol El sistema Java pasa información del evento a un Componente a través del método handleEvent() del Componente. El sistema run-time del lenguaje Java capturará la información sobre el evento (el número de clicks. Veamos la descripción de una acción con el applet de la figura anterior. Un valor true indica que el evento ha sido controlado y que su propagación debe detenerse. hasta que alcanza al Contenedor de la raíz del árbol.Cuando un usuario interactúa con el applet. Todos los métodos handleEvent() deben ser de la forma: public boolean handleEvent( Event evt ) Un controlador de eventos solamente necesita una información: una referencia a la instancia de la clase Event que contiene la información del evento que se ha producido. El usuario pulsa el botón "Uno". Es en ese momento cuando el sistema Java permite al applet controlar el evento. componente a componente. el botón que ha sido pulsado) y se desplaza hacia arriba en el árbol de Componentes. la . Indica al sistema Java si el evento ha sido o no completamente controlado por el controlador. o que no ha sido controlado en su totalidad y debe continuar su propagación hacia arriba en el árbol de Componentes. el sistema Java crea una instancia de la clase Event y rellena sus datos miembro con la información necesaria para describir la acción. El valor devuelto por el método handleEvent() es importante.

.ACTION_EVENT ) ta. return super. ofrece a éste la posibilidad de reaccionar ante el evento. el botón "Uno") y.MOUSE_DOWN ) ta.id == Event. o no lo hace completamente (indicado por un valor de retorno false). El código del controlador de eventos usado en el ejemplo es el que muestran las siguientes líneas: public boolean handleEvent( Event evt) { if( evt.. Si el Componente no controla el evento. else if( evt.\n" ). } "" . El sistema Java comienza entonces por el Componente que ha sido pulsado (en este caso. El sistema Java continúa 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 algún Componente lo controle.localización del click.handleEvent( evt )..appendText( "Panel " + str + " recibe mouse_down.id == Event. una instancia de la clase Panel). a través de una llamada al método handleEvent() del Componente.\n" ).appendText( "Panel " + str + " recibe action. la hora en que se ha producido la pulsación y el Componente que ha recibido el click) y empaqueta todos esos datos en una instancia de la clase Event. Luego permite que el evento se propague al siguiente Componente.. Cada Componente del applet añade una línea al objeto TextArea indicando que ha recibido un evento. el sistema Java presentará la instancia de Event al siguiente Componente por encima en el árbol (en este caso.

com/supertutoriales/ 08 Mayo 2007 Escuela De Producción Considerada La Mejor Del Mundo. Extraido de: http://www. La Academia De Cine NY. 194 | siguiente > "" Los eventos se catalogan por su naturaleza..publispain.Tipos de Eventos 107 . que se indicará en el miembro id de su estructura.. Entra Ya! www. 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 KEY_PRESS KEY_RELEASE KEY_ACTION KEY_ACTION_RELEASE .edu/Produccion Anuncios Google < anterior | 1 .Tutorial de Java . 105 106 107 108 109 .Tipos de Eventos Tutorial creado por Agustín Froufe .nyfa. 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.

.Eventos de Ratón Son los eventos generados por acciones sobre el ratón dentro de los límites 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 manipulación de barras de desplazamiento (scrollbars). o o LIST_SELECT LIST_DESELECT Eventos Varios Son los eventos generados en función de diversas acciones. 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.

java está diseñado para observar los eventos que se producen sobre él.awt. import java. que son los dos parámetros que necesita el constructor del objeto List. pero tenía la ventaja de ser la forma más fácil de ver los eventos. teclear algo. vayan apareciendo los textos que indican los eventos que está recibiendo el applet. add( lista ). public void init() { lista = new List( 25. } . jugar un poco con el applet. Cada vez que se genera un evento. Lo cierto es que el uso de System. e incluso puede llegar a no funcionar en algunos sistemas.*. picar y arrastrar.Applet. picar con el ratón. lista. Una Lista es una lista de cadenas o Strings definidas en java. el applet responde imprimiendo el evento que ha capturado en la línea de comandos desde donde se ha lanzado el applet.java que se muestra a continuación corresponde al anterior ejemplo un poco modificado. Crearemos una lista de 25 líneas y no permitiremos selección múltiple. El código EventosList. import java. Mover el cursor dentro del applet. o en la consola Java en caso de Netscape. public class EventosList extends Applet { List lista.List.applet. Las acciones anteriores harán que en la ventana en donde se haya lanzado el appletviewer.awt. vamos a reescribir el código del applet utilizando una Lista.false ). Una vez que se haya compilado el código y cargado el applet en el appletviewer o en un navegador con soporte Java.out.println() en un applet es algo que no debería utilizarse. No obstante.o o o o o ACTION_EVENT LOAD_FILE SAVE_FILE GOT_FOCUS LOST_FOCUS El applet EventosPrnt. cambiar el tamaño de la ventana y taparla y destaparla con otra.addItem( "Evento init" ).

} public void destroy() { lista. return false.int x. int y ) { lista.addItem( "Evento mouseDrag en ("+x+".public void start() { lista.addItem( "Evento start" ). return false."+y+")" ).int x."+y+")" ). return false. } public void update( Graphics g ) { lista. } public boolean mouseDown( Event evt. int y ) { lista."+y+")" ).addItem( "Evento paint" ). } . } public boolean mouseUp( Event evt.int x. int y ) { lista.addItem( "Evento mouseDown en ("+x+".addItem( "Evento destroy" ). } public boolean mouseDrag( Event evt.addItem( "Evento update" ). } public void paint( Graphics g ) { lista.addItem( "Evento mouseUp en ("+x+".

int y ) { lista.carácter "+(char)x ). return false. int y ) { lista.addItem( "Evento mouseMove en ("+x+".addItem( "Evento gotFocus" ).addItem( "Evento getFocus" ). int y ) { lista.int x.int x."+y+")" ).addItem( "Evento mouseExit" ).addItem( "Evento keyDown. } public void lostFocus() { .int x ) { lista. return false.int x. return true. } public void gotFocus() { lista. } public boolean mouseEnter( Event evt.addItem( "Evento mouseEnter en ("+x+". } public boolean mouseExit( Event evt."+y+")" ).public boolean mouseMove( Event evt. } public void getFocus() { lista. return false. } public boolean keyDown( Event evt.

para poder generar diferentes eventos. Hemos incorporado un botón y una lista. podemos observar los datos que el sistema Java envía en la recolección de esos eventos.java muestra los datos que componen cada evento que se produce. botón y lista.lista.addItem( "Evento lostFocus" ). tal como se puede apreciar en la figura. Moviendo el ratón o actuando sobre los dos Componentes. . } } El applet VisorEventos.

.

Su valor será el valor Unicode del carácter que representa la tecla. Alt. pulsaciones de teclas. sin embargo. y .).. El origen se toma en la esquina superior izquierda del Componente key . pulsación de un botón. Fácil. 194 | siguiente > Un contenedor //soltado// en un entorno gráfico se convierte en rápido receptor de eventos de todo tipo. los referidos a acciones del usuario respecto de componentes (elección de un menú. when . 104 105 106 107 108 . por último.La combinación aritmética del estado en que se encuentran las teclas modificadoras Mays. etc.La clase Event Tutorial creado por Agustín Froufe .El número de clicks de ratón consecutivos.. etc.Es un argumento dependiente del evento. Rápido y Económico.El tipo de evento que se ha producido target . Ctrl. creación/movimiento/destrucción de partes gráficas y. Para objetos Button. Los datos miembro de la clase Event son los que se indican a continuación: id . .Componente sobre el que se ha producido el evento x. InstitutoMaurer.Instante en que se ha producido el evento modifiers . F2.com. Extraido de: http://www. La clase Event es el jugador principal en el juego de los eventos. que un programa cree y envíe eventos a los Componentes a través de su método //postEvent()//.Las coordenadas en donde se ha producido el evento relativas al Componente que actualmente está procesando ese evento. es la tecla que se ha pulsado. clickCount . F1.com/supertutoriales/ 08 Mayo 2007 Aprende Contabilidad y Obtén tu Diploma sin salir de tu Casa. Intenta capturar las características fundamentales de todos los eventos que genera el usuario.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.106 .mx Anuncios Google < anterior | 1 . singularmente de los relacionados con el movimiento del ratón. FIN. Otros valores que puede tomas son los de las teclas especiales como INICIO. Es posible.Para eventos de teclado.publispain. Sólo tiene importancia en los eventos MOUSE_DOWN arg . este objeto //arg// es un objeto String que contiene la etiqueta de texto del botón evt .

import java.25 ) . public class HolaMundo extends Applet { public void paint( Graphics g ) { g.. } } ==== //Componentes básicos de un Applet// ==== El lenguaje Java implementa un modelo de Programación Orientada a Objetos.25.applet. Autocad. ==== //HolaMundo// ==== A continuación está el código fuente del applet HolaMundo. Los objetos sirven de bloques centrales de construcción de los programas Java.drawString( "Hola Mundo!".com/Cuernavaca Anuncios Google < anterior | 1 . De la misma forma que otros lenguajes de programación. Aprende lo último en Software y mas www. Excel. Cursos Nuevos Cursos de 3d.publispain.java HolaMundo.Tutorial de Java . 194 | siguiente > Vamos a comenzar la creación del código fuente del un applet que satisfaga nuestras necesidades. Guardar este código en un fichero fuente Java como http://www. Web.Graphics.Un Applet basico en Java 40 ..java. // // Applet HolaMundo de ejemplo // import java. que es la versión applet de la mínima aplicación Java que antes habíamos escrito.com/supertutoriales/ 08 Mayo 2007 Inscríbete. Recordamos que Java utiliza la extensión .Applet. Extraido de: http://www. Java tiene variables de estado y métodos.Un Applet basico en Java Tutorial creado por Agustín Froufe .com/supertutoriales/diseno/java/cursos/3/Fuentes/Cap2/HolaMundo. 38 39 40 41 42 .awt.d4reality. Veamos como se descompone un applet en sus piezas/objetos: /* Sección de importaciones */ .publispain.java para designar los ficheros fuente.

en el applet HolaMundo se importa la clase //java.25.applet. lo que hacemos es: public void paint( Graphics g ) { g. se importan las dos clases que necesita. se ejecutará este último //paint()// y no el //paint()// vacío de la clase Applet. No hay variables de estado.int x2. luego. La función //paint()// declara a ##g## como un objeto de tipo //Graphics//. y podremos llamar a los métodos de esta clase desde cualquier método de nuestro programa que se encuentre en el fichero //HolaMundo. extendiendo la clase básica de Java: Applet.25 ).public class NombreDelNuevoApplet extends Applet { /* Aquí se declaran las variables de estado (public y private) */ /* Los métodos para la interacción con los objetos se declaran y definen aquí */ public void MetodoUno( parámetros ) { /* Aquí viene para cada método. En nuestro caso. //paint()// usa el método //drawString()// de la clase Graphics para generar su salida.int ancho. Qué código se use depende del applet */ } } Para HolaMundo. public class HolaMundo extends Applet { //Métodos de Applet// La parte del applet a modificar es el método //paint()//. Por ejemplo. . se llama al método paint() cada vez que el método arranca o necesita ser refrescado. en este caso HolaMundo. De esta forma. En la clase Applet.. el código Java que desempeña la tarea.int alto ) ..int y. //Clases incluidas// El comando ##import## carga otras clases dentro de nuestro código fuente. import java.awt.int alto ) drawOval( int x. pero no hace nada.int ancho. Otros métodos básicos para dibujar son: drawLine( int x1. El importar una clase desde un paquete de Java hace que esa clase importada esté disponible para todo el código incluido en el fichero fuente Java que la importa. Luego. que le dice al applet cómo debe aparecer un texto en el área de dibujo. podemos lograr que lleve a cabo las funciones que deseamos.Applet.Graphics//. Modificando determinados métodos del applet. se hereda todo lo necesario para crear un applet.drawString( "Hola Mundo!". Esta clase define una área gráfica y métodos para poder dibujar dentro de ella.int y1.java//.int y2 ) drawRect( int x.int y. y sólo se tiene que definir un método para que el applet tenga el comportamiento esperado. //La clase Applet// Se puede crear una nueva clase. } De acuerdo a las normas de sobrecarga. aquí se ejecuta el método //drawString()//.

las coordenadas (##x.y##) son la esquina superior izquierda del rectángulo (para drawOval. http://www.publispain.wikilearning.Tanto para //drawRect()// como para //drawOval()//.com/supertutoriales/diseno/java/cursos/3/Cap4/tipoev. el óvalo es encajado en el rectángulo que lo circunscribe).com/tutorial/tutorial_de_javageneracion_y_propagacion_de_eventos/3938-108 http://www.html .

Sign up to vote on this title
UsefulNot useful