EVENTOS
Todo sistema operativo que utiliza interfaces grficas de usuario debe estar constantemente monitorizando el entorno para capturar y tratar los eventos que se producen
El sistema operativo informa de estos eventos a los programas que se estn ejecutando y entonces cada programa decide que hace para
dar respuesta a esos eventos Los eventos pueden estar producidos por el sistema o por el usuario
Eventos
Cada vez que el usuario realiza una determinada accin sobre una aplicacin Java se produce un evento que el sistema operativo transmite a Java.
Java crea un objeto de una determinada clase de evento, y este evento es transmitido a un determinado mtodo para que lo gestione.
El modelo de eventos de Java est basado en delegacin (la responsabilidad de gestionar un evento que ocurre en un objeto - source- la tiene otro objeto-listener)
Elementos del modelo de eventos en Java
Jerarquas de clases de Eventos
Fuentes de Eventos (event sources) Receptores de Eventos (event listener)
Adaptadores (adapter classes)
Fuente de eventos
Los fuentes de eventos (event sources) son objetos que detectan eventos y notifican a los receptores que se han producido dichos eventos
Ejemplos de fuentes : Botn sobre el que se pulsa Campo de texto que pierde el foco Campo de texto sobre el que se presiona una tecla Ventana que se cierra
Clase del evento
Cuando se produce un evento dicho evento es representado como un objeto de una clase que desciende de EventObject
Los eventos estn organizados en jerarquas de clases de eventos
Receptor del evento
Cuando ocurre un evento el objeto fuente
necesita llamar a un objeto receptor Los receptores de eventos (event listener) son objetos instanciados de una clase que implementa un interface especfico, denominado interface listener. Ejemplos de interfaces listener (paquete [Link]) son: ActionListener, AdjustmentListener, ComponentListener, ContainerListener, FocusListener, ItemListener, KeyListener, MouseListener, WindowListener,
Registro
Cuando ya disponemos del objeto fuente y del objeto
receptor es necesario asociarlos, es decir, hay que registrar el objeto receptor de eventos con el objeto fuente de los mismos:
Adaptadores
Los adaptadores (adapter classes) tienen como
objetivo evitar la tediosa tarea de tener que implementar todos los mtodos de las interfaces listener. Por ello existe una clase adaptadora por cada interface listener que tiene ms de un mtodo: MouseAdapter, WindowAdapter, KeyAdapter, MouseMotionAdapter, FocusAdapter, ContainerAdapter y ComponentAdapter, etc. Las clases adaptadoras implementan los mtodos de la interface correspondiente como vacos
Construccin de la clase receptora
Por lo general la clase receptora necesita acceder a
miembros de la clase Marco1 que contiene el objeto fuente. Para conseguir esto existen al menos dos posibilidades: Pasar una referencia al Marco1 en el constructor de la clase receptora con lo que ya podr acceder a los miembros de dicha clase Marco1 Crear la clase receptora como una clase interna de la clase Marco1. Una clase interna es una clase definida dentro de otra clase y que tiene acceso a los miembros de la clase que la encierra. Ambas posibilidades son permitidas por Jbuilber
A continuacin vamos a ver todos estos conceptos con dos ejemplos
Ejemplo 1. ActionEvent - Cambiar el color del fondo de una ventana
pulsando en un botn
Fuente del evento
Es el objeto que detecta el evento y notifica a los receptores que se ha producido dicho evento
Ej. (jButtonAzul)
Clase del evento
En el caso del ejemplo que nos ocupa el evento que se
genera al presionar un botn es de tipo ActionEvent
Receptor del evento
El receptor para un evento ActionEvent debe ser una
clase que implemente el interface ActionListener que nicamente contiene un mtodo: actionPerformed.
Receptor del evento (II)
Registro
Finalmente, es necesario registrar el objeto receptor de
eventos con el objeto fuente de los mismos:
Una vez registrado, cada vez que ocurre el evento
(pulsamos el botn) automticamente se llama al mtodo apropiado (actionPerformed), pasndole como parmetro un objeto que es una instancia de ActionEvent.
Registro II
Construccin de la clase receptora ProcesaBoton
Vamos a ver a continuacin las dos formas de construir la clase receptora ProcesaBoton:
Como clase interna de la clase Marco1 (es la
ya comentada en la transparencia 15) Pasndole una referencia a la clase Marco1 en el constructor Vamos a ver tambin como genera Jbuilder ambas posibilidades
Construccin de la clase receptora ProcesaBoton como clase interna de la clase Marco1
En este caso la clase ProcesaBoton se construye como una clase interna de la clase Marco1 lo que permitir el acceso a miembros de Marco1
Eventos Resumen
Eventos Resumen
Eventos Resumen