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.

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

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

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

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 función de diversas acciones.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).

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

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

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

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

.

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

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

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

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. las coordenadas (##x.publispain.y##) son la esquina superior izquierda del rectángulo (para drawOval. http://www.wikilearning.Tanto para //drawRect()// como para //drawOval()//.

Sign up to vote on this title
UsefulNot useful