You are on page 1of 5

UNIDAD 1.

-EVENTOS
Los eventos son el medio como interacta una clase con otras o con el propio usuario, se encargan de avisar que algo ha ocurrido y de manejarlo de una forma o de otra. Cada vez que escribimos con nuestro teclado, que hacemos clic en un botn o un link, que cambiamos el tamao de un objeto, estamos generando eventos.

1.1.-TIPOS DE EVENTOS
Eventos de alto nivel: son los que tienen que ver con clicar botones o elegir comandos (ActionEvent), cambiar valores en barras de desplazamiento (AdjustmentEvent), elegir valores (ItemEvents) o cambiar el texto (TextEvent). Eventos de bajo nivel: son las acciones elementales que hacen posible los eventos de alto nivel y que se producen con las operaciones elementales de los componentes (ComponentEvent), con los containers (ContainerEvent), con pulsar teclas (KeyEvent), con todo lo que tenga que ver con el uso del ratn (MouseEvent), con obtener o perder el focus (FocusEvent) y con las operaciones con ventanas (WindowEvent) ComponentEvent: Se producir este tipo de evento cuando el usuario mueva o redimensione un componente. FocusEvent: Se producir este tipo de evento cuando se cambie el foco de un componente. El foco hace referencia al componente en el que estamos trabajando. MouseEvent: Se producir cuando el usuario efecte un movimiento con el ratn o haga un clic. WindowEvent: se producir cuando se realice algn tipo de operacin con la ventana como abrirla y cerrarla. ActionEvent: Se producir cuando se efecte alguna componente, como por ejemplo: la presionar un botn. accin sobre un

1.2.-GENERACION Y PROPAGACION DE EVENTOS


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.

Aqu se 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 su dato 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 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 la forma siguiente:

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.

1.3.-METODOS DE CONTROL DE EVENTOS


El mtodo handleEvent () es un lugar para que el programador pueda insertar cdigo para controlar los eventos. A veces, sin embargo, un Componente solamente estar interesado en eventos de un cierto tipo. En estos casos, el programador puede colocar el cdigo en un mtodo de ayuda, en lugar de colocarlo en el mtodo handleEvent (). No hay mtodos de ayuda para ciertos tipos de eventos, aqu est la lista de los que estn disponibles para los programadores: Action (Event evt, Object obj) GotFocus (Event evt, Object obj) LostFocus (Event evt, Object obj) MouseEnter (Event evt, int x, int y) MouseExit (Event evt, int x, int y) MouseMove (Event evt, int x, int y) MouseUp (Event evt, int x, int y) MouseDown (Event evt, int x, int y) MouseDrag (Event evt, int x, int y) KeyDown (Event evt, int key)

KeyUp (Event evt, int key)

False indicar que el mtodo de ayuda no maneja el evento.

La implementacin del mtodo handleEvent () proporcionada por la clase Component invoca a cada mtodo de ayuda. Por esta razn, es importante que las implementaciones redefinidas del mtodo handleEvent () en clases derivadas, siempre finalicen con la sentencia: Return (super.handleEvent (evt)); El siguiente trozo de cdigo ilustra esta regla. Public Boolean handleEvent (Event evt) { If (evt.target instanceof MiBoton) { // Hace algo... Return true; } Return (super.handleEvent (evt)); } No seguir esta regla tan simple har que no se invoquen adecuadamente los mtodos de ayuda. El applet EventosRaton.java, que controla los eventos de ratn exclusivamente a travs de cdigo insertado en sus mtodos de ayuda; va dibujando una lnea (rubber band) entre el ltimo punto donde se ha producido un click de ratn y la posicin actual del cursor.

1.4.-CREACIN DE EVENTOS
Algunos de los eventos que ms frecuentemente tendremos que controlar son los siguientes:

ACTION_EVENT MOUSE_DOWN KEY_PRESS WINDOW_DESTROY En la documentacin de la clase Event se encuentra toda la lista de eventos que cualquier aplicacin puede necesitar manejar y su documentacin; como ejemplo de uso vamos a detenernos en el primero de ellos, ACTION_EVENT.

Como ejemplo del manejo de eventos vamos a ver este evento que se provoca al pulsar un botn, seleccionar un men, etc. Para su control podemos manejarlo en el mtodo //handleEvent()// o en el mtodo //action()//. Los dos mtodos anteriores pertenecen a la clase Component por lo que todas las clases derivadas de sta contendrn estos dos mtodos y se pueden sobrecargar para que se ajuste su funcionamiento a lo que requiere nuestra aplicacin. Veamos el siguiente ejemplo, en que se controla este evento a travs del mtodo //handleEvent ()//, que es el mtodo general de manejo de eventos:

public boolean handleEvent( Event evt ) { switch( evt.id ) { case Event.ACTION_EVENT: // evt.arg contiene la etiqueta del botn pulsado // o el item del men que se ha seleccionado if( ( "Pulsado "+n+" veces" ).equals( evt.arg ) ) return( true ); default: return( false ); } } Pero en este caso, cuando se produce este evento se llama al mtodo //action()//, que sera: public boolean action( Event evt,Object arg ) { if( ( "Pulsado "+n+" veces" ).equals( arg ) ) return( true ); return( false ); } Como se puede comprobar, incluso si las etiquetas cambian se puede recibir el evento. Los ejemplos anteriores corresponden al control de un evento producido por un botn que cambia su etiqueta cada vez que se pulsa. Aunque esta no es la nica forma de manejar eventos; de hecho se puede hacer:

If (evt.target == miBoton) en donde se comparan objetos en lugar de etiquetas.

You might also like