Mostrando entradas con la etiqueta Eventos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Eventos. Mostrar todas las entradas

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):





AWT (Abstract Window Toolkit)


Las Java Foundation Classes (JFC en español) son un framework gráfico que sirven para construir interfaces gráficas de usuario basadas en Java. Está compuesta de AWT (Abstract Window Toolkit), Swing y Java 2D, y recrean una interfaz de usuario para programas Java. En definitiva, son las API estándar para suministrar una interfaz gráfica de usuario (GUI) para un programa Java.

AWT (Kit de herramientas de Ventana Abstracta -en español-), es un kit de herramientas de gráficos, interfaz de usuario, y sistema de ventanas independiente de la plataforma original de Java. Llegados a J2SE 1.2, los widgets de AWT fueron superados a los del kit Swing, que es una biblioteca gráfica para Java que forma parte de las JFC y que incluye widgets para interfaz gráfica de usuario tales como cajas de texto, botones, desplegables y tablas.

________________________

En resumen, AWT se encuentra en el paquete java.awt y se apoya en la plataforma para la visualización, lo que provoca cambios según la plataforma que empleamos; Swing es una extensión de AWT.

Vamos a realizar nuestra primera ventanuca: ejemploFrame.java

La estructura del AWT se resume en que los Contenedores (Containers) contienen Componentes (Components), que son los controles básicos, los que a su vez contienen Objects; no se usan posiciones fijas de los Componentes, sino que están situados a través de Layouts; no existe un formato de recursos por lo que no se puede separar el código de la interface (no hay ningún diseñador de interfaces).

La interface gráfica se compone de elementos gráficos básicos de usuario:
  • Los contenedores (container): es la ventana o parte de la ventana donde se colocarán los componentes y donde se realizan los dibujos. Los contenedores contienen y organizan la situación de los Componentes. Los contenedores son en sí mismo contenedores, por lo que pueden ir dentro de ellos mismos. En el AWT, todos los contenedores son instancias de la clase Container o uno de sus tipos.
  • Los componentes (componet):botones, barras de desplazamiento, etiquetas, listas, cajas, campos de texto, etc., que permiten al usuario interactuar con la aplicación y proporcionar información desde el programa al usuario sobre el estado del programa. En AWT, todos los componentes de la interface de usuario son instancias de la clase Component. Los componentes se agrupan dentro de contenedores.


    Algunas de las características de los componentes:
    1. Todos los Components (menos Window y sus derivados) se tienen que añadir a un Container.
    2. Para añadir un Component a un Container se emplea el método add() de la clase Container: ventana.add(boton);
    3. Los Containers de máximo nivel son las Windows (Frames y Dialogs). Los Panels y ScrollPanes siempre deben estar de otro Container.
    4. Un Component sólo puede estar dentro de un Container. Si esta en uno y se añade a otro, deja de estar en el primero.
    5. La clase Component tiene variables y métodos básicos, que son heredados por todas sus sub-clases.
  • El modelo de eventos: el usuario controla la aplicación actuando sobre los componentes (con el ratón o el teclado). Cada vez que el usuario realiza una acción, se produce el evento correspondiente, y que el sistema operativo transmite al AWT, el cual crea un objeto de una determinada clase de evento, derivada de AWTEvent. Este evento es transmitido a un determinado método para que los gestione. En definitiva, el objeto o componente que recibe el evento debe registrar o indicar previamente qué objeto se va a hacer cargo de gestionar ese evento. Jerarquía de eventos:

Basándonos en las clases MiVentana, MiBoton y MiTexArea que están en el repositorio, he creado mi clase Ventana.java.