P. 1
Generación y Propagación de Eventos

Generación y Propagación de Eventos

|Views: 2.406|Likes:
Publicado porLuzyy Luzy

More info:

Published by: Luzyy Luzy on Feb 06, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

10/21/2015

pdf

text

original

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

} "" .localización del click. 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. 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... el botón "Uno") y. a través de una llamada al método handleEvent() del Componente.id == Event.appendText( "Panel " + str + " recibe mouse_down.appendText( "Panel " + str + " recibe action. En la figura siguiente mostramos el camino recorrido por el evento en su intento de que algún Componente lo controle. else if( evt. ofrece a éste la posibilidad de reaccionar ante el evento. Si el Componente no controla el evento..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. Luego permite que el evento se propague al siguiente Componente.\n" ). 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). el sistema Java presentará la instancia de Event al siguiente Componente por encima en el árbol (en este caso.handleEvent( evt ). return super..ACTION_EVENT ) ta.id == Event. una instancia de la clase Panel).\n" ).

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

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. 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.

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

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

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

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

.

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

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

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

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

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->