GUI Informe TP 2
GUI Informe TP 2
GUI Informe TP 2
La interfaz de usuario es la parte del programa que permite al usuario interaccionar con l. La API de Java proporciona una biblioteca de clases para el desarrollo de Interfaces grficas de usuario (en realidad son dos: AWT y Swing). La biblioteca proporciona un conjunto de herramientas para la construccin de interfaces grficas que tienen una apariencia y se comportan de forma semejante en todas las plataformas en las que se ejecuten. La estructura bsica de la biblioteca gira en torno a componentes y contenedores. Los contenedores contienen componentes y son componentes a su vez, de forma que los eventos pueden tratarse tanto en contenedores como en componentes. La API est constituida por clases, interfaces y derivaciones. Diagramacin de una GUI
Swing es un conjunto de clases desarrolladas por primera vez para Java 1.2 (el llamado Java2), para mejorar el anterior paquete que implementaba clases para fabricar interfaces de usuario, el llamado AWT (Abstract Window Tools) que an se usa bastante en las aplicaciones Java. Tanto Swing como AWT forman parte de una coleccin de clases llamada JFC (Java Foundation Classes) que incluyen paquetes dedicados a la programacin de interfaces grficos (as como a la produccin multimedia).
2.1. Paquete AWT AWT est formada por un conjunto de clases que no dependen del sistema operativo, pero que proponen una serie de clases para la programacin de GUIs. AWT usa clases grficas comunes a todos los sistemas operativos grficos y luego la mquina virtual traduce esa clase a la forma que tenga en el sistema concreto en el que se ejecut el programa, sin importar que dicho sistema sea un sistema X, McIntosh o Windows. Componentes para AWT
A Pesar del avance con AWT, se encontraban 3 limitaciones en la implementacin de dicho paquete: a) AWT tena problemas de compatibilidad en varios sistemas. b) A AWT le faltaban algunos componentes avanzados (rboles, tablas,...). c) Consuma excesivos recursos del sistema.
2.2. Paquete Swing Swing aporta muchas ms clases, consume menos recursos y construye mejor la apariencia de los programas. En cualquier caso, AWT no desaparece; simplemente se aade a las nuevas capacidades Swing.
2.2.1. Componentes de Swing Los componentes son los elementos bsicos de la programacin con Swing. Todo lo que se ve en un GUI de Java es un componente. Los componentes se colocan en otros elementos llamados contenedores que sirven para agrupar componentes. Un administrador de diseo se encarga de disponer la presentacin de los componentes en un dispositivo de presentacin concreto. Componentes para Swing
2. ESCUCHADORES DE EVENTOS Cada tipo de evento tiene asociado un interfaz para manejar el evento. A esos interfaces se les llama escuchadores (Listeners) ya que proporcionan mtodos que estn a la espera de que el evento se produzca. Cuando el evento es disparado por el objeto fuente al que se estaba escuchando, el mtodo manejador del evento se dispara automticamente. Ejemplo: el mtodo actionPerformed es el encargado de gestionar eventos del tipo ActionEvent (eventos de accin, se producen, por ejemplo, al hacer clic en un botn). Este mtodo est implementado en la interfaz ActionListener (implementa escuchadores de eventos de accin). Cualquier clase que desee escuchar eventos (los suyos o los de otros objetos) debe implementar la interfaz (o interfaces) pensada para capturar los eventos del tipo deseado. Esta interfaz habilita a la clase para poder implementar mtodos de gestin de eventos. Ejemplo: un objeto que quiera escuchar eventos ActionEvent, debe implementar la interfaz ActionListener. Esa interfaz obliga a definir el mtodo ya comentado actionPerformed. El cdigo de ese mtodo ser invocado automticamente cuando el objeto fuente produzca un evento de accin.
El objeto fuente permite que un objeto tenga capacidad de enviar eventos. Esto se consigue mediante un mtodo que comienza por la palabra add seguida por el nombre de la interfaz que captura este tipo de eventos. Este mtodo recibe como parmetro el objeto escuchador de los eventos. Esto es ms fcil de lo que parece. Para que un objeto fuente, sea escuchado, hay que indicar quin ser el objeto que escuche (que obligadamente deber implementar la interfaz relacionada con el evento a escuchar). Cualquier componente puede lanzar eventos, slo hay que indicrselo, y eso es lo que hace el mtodo add. Ejemplo: import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * Clase MiVentana * @author PC9 */ public class MiVentana extends JFrame implements ActionListener { JButton boton1=new JButton("Prueba de Boton"); //Constructor
public MiVentana() { boton1.addActionListener(this); // el boton lanza eventos que son // capturados por la ventana } @Override public void actionPerformed(ActionEvent ae) { //Manejo del evento } } Eliminar Oyente
Hay un mtodo remove que sirve para que un oyente del objeto deje de escuchar los eventos.
5. JERARQUIZACIN DE EVENTOS
6. OBJETO DE EVENTO 6.1. Clase EventObject Todos los objetos de evento pertenecen a clases que derivan de EventObject. Esta es la superclase de todos los objetos de evento. Representa un evento genrico y en la prctica slo sirve para definir los mtodos comunes a todos los eventos que son:
6.2. Clase AWTEvent Se trata de una clase descendiente de EventObject y padre de todos los eventos para componentes Swing y AWT. Se encuentra en el paquete java.awt.event. Proporciona mtodos comunes para todas sus clases hijas. Estos son (adems de los ya comentados getSource y toString):
2. FORMA DE OPERAR DE LA CLASE ADAPTADORA Una clase abstracta adaptador para recibir eventos de los componentes. Los mtodos de esta clase estn vacos. Esta clase existe como la conveniencia de crear objetos detectores. Extienda esta clase para crear una ComponentEvent oyente y reemplazar los mtodos para los eventos de inters. (Si se implementa la ComponentListenerinterfaz, debe definir todos los mtodos en el mismo. Esta clase abstracta define mtodos nulos para todos ellos, por lo que slo se puede tener para definir mtodos para los eventos que le interesan.) Crear un objeto detector con su clase y luego registrarlo con un componente utilizando el componente addComponentListener mtodo. Cuando el tamao del componente, la ubicacin o la visibilidad de los cambios, el mtodo correspondiente en el objeto detector se invoca y la ComponentEvent se pasa a ella.
3. CLASE ComponentAdapter
4. CLASE ContainerAdapter
5. CLASE FocusAdapter Una clase abstracta adaptador para recibir eventos de foco de teclado.
6. CLASE MouseAdapter
7. CLASE MouseMotionAdapter
8. CLASE KeyAdapter Una clase abstracta adaptador para recibir eventos de teclado.
9. CLASE WindowAdapter