martes, 27 de mayo de 2008

Jerarquía de Componentes y Eventos

MODELO DE EVENTOS

Se basa en que los objetos sobre los que se producen los eventos (event sources) registran los objetos que deberán gestionarlos (event listeners), para lo que los listeners necesitan de los métodos adecuados, y estos se implementan de las interfaces Listener, que se corresponden con los tipos de eventos que se pueden producir.

El proceso que hay que seguir para crear una aplicación orientada a eventos con interface gráfica de usuario:
  1. Saber los componentes que formarán parte de la interface de usuario.
  2. Crear una clase para la aplicación, que debe contener la función main().
  3. Crear una clase Ventana que extienda de Frame y que responda al evento WindowClosing().
  4. a función main() debe crear un objeto de la clase Ventana, donde introduciré los componentes y que mostrarépor pantalla.
  5. Añadir al objeto Ventana los componentes y menús que desee (se puede hacer desde la función main() o desde el constructor de la ventana.
  6. Definir los objetos Listener (que se encargarán de responder a los eventos y cuyas clases implementan las distintas interfaces Listener) para cada uno de los eventos que deban estar soportados.
  7. Implementar los métodos de las interfaces Listener que se vayan a hacer cargo de la gestión de los eventos.
Jerarquía de Eventos
La superclase EventObject pertenece al paquete java.util, y deriva la clase AWTEvent, de la que dependen todos los eventos de AWT. Los eventos de Java se encuentran agrupadas en el paquete java.awt.event, y se pueden agrupar en:
  • Eventos de alto nivel: llamados así porque la acción de la que derivan tiene un significado en sí misma, son los que tienen que ver con clicar botones o elegir comandos (ActionEvent), cambiar valores en barras de desplazamiento (AdjustmentEvent), elegir valores (ItemEvents) y 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 con componentes (ComponentEvent), con los containers (ContainerEvent), con pulsar teclas (KeyEvent), con todo lo que tenga que ver con el uso del ratón (MouseEvent), con obtener o perder el focus (FocusEvent) y con las operaciones con ventanas (WindowEvent).
La siguiente tabla muestra los componentes del AWT y los eventos específicos de cada uno de ellos:



Y esta otra tabla muestra los componentes del AWT y todos los tipos de eventos que se pueden producir sobre cada uno de ellos (tener en cuenta que también son específicos de sus superclases):





2 comentarios:

Juan Antonio Ruz dijo...

muy bien la documentación!

unas notas sobre el modelo de eventos....
Para hacer un programa orientado a eventos hay que distinguir los siguientes roles/responsabilidades:
objeto evento (Event)
objeto lanzador de evento (EventDispatcher)
objeto escuchador de eventos (EventListener)

Según la tecnología que utilicemos habrá que dar de alta (registrar) los eventos, lanzadores y escuchadores de una manera diferente, aunque eso no afecta a lo que se persigue o consigue con esta forma de orientar el código y el funcionamiento del programa.
En awt, los componentes son todos lanzadores de eventos y registradores de listeners (addWindowListener(x) como metodo de la clase Frame), aunque esto no se cumple en otras tecnologías (ej:EJB3).

Digihost dijo...

La solicitud de eventos es necesaria hoy en día.
Guía para el patrocinio en Apps para Eventos con EventMobi