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.

Es en ese momento cuando el sistema Java permite al applet controlar el evento. El valor devuelto por el método handleEvent() es importante. componente a componente. Indica al sistema Java si el evento ha sido o no completamente controlado por el controlador. el botón que ha sido pulsado) y se desplaza hacia arriba en el árbol de Componentes. El usuario pulsa el botón "Uno". 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. Un valor true indica que el evento ha sido controlado y que su propagación debe detenerse. 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. 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. o que no ha sido controlado en su totalidad y debe continuar su propagación hacia arriba en el árbol de Componentes. hasta que alcanza al Contenedor de la raíz del árbol. El sistema run-time del lenguaje Java capturará la información sobre el evento (el número de clicks. Durante este camino.Cuando un usuario interactúa con el applet. Este control comienza por el Componente que recibe inicialmente el evento (por ejemplo. la . Un valor false indica que el evento ha sido ignorado. Veamos la descripción de una acción con el applet de la figura anterior.

appendText( "Panel " + str + " recibe action. ofrece a éste la posibilidad de reaccionar ante el evento. else if( evt. el sistema Java presentará la instancia de Event al siguiente Componente por encima en el árbol (en este caso.appendText( "Panel " + str + " recibe mouse_down...handleEvent( evt ). El sistema Java comienza entonces por el Componente que ha sido pulsado (en este caso.MOUSE_DOWN ) ta. 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. o no lo hace completamente (indicado por un valor de retorno false). el botón "Uno") y..ACTION_EVENT ) ta. Luego permite que el evento se propague al siguiente Componente. 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. Cada Componente del applet añade una línea al objeto TextArea indicando que ha recibido un evento. Si el Componente no controla el evento. 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.\n" ). } "" .. a través de una llamada al método handleEvent() del Componente. En la figura siguiente mostramos el camino recorrido por el evento en su intento de que algún Componente lo controle.id == Event.\n" ).id == Event.localización del click. return super. una instancia de la clase Panel).

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

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. 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). .Eventos de Ratón Son los eventos generados por acciones sobre el ratón dentro de los límites de un Componente.

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

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

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

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

.

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

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

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

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

Sign up to vote on this title
UsefulNot useful