AWT

AWT (Abstract Window Toolkit)
Información sobre la plantilla
Parte de la familia Java
AWT ejemplo.jpg
Ejemplo de algunos de los componentes gráficos de AWT
CreadorSun Microsystems
Fecha de Creación1991
Sitio web
Java en Español

Abstract Window Toolkit. (AWT, en español Kit de Herramientas de Ventana Abstracta). Conjunto de herramientas GUI (Interfaz Gráfica con el Usuario) diseñadas para trabajar con múltiples plataformas. Interfaz de usuario, y sistema de ventanas independiente de la plataforma original de Lenguaje de programación Java. AWT es parte de las Java Foundation Classes (JFC) - la API estándar para suministrar una interfaz gráfica de usuario (GUI) para un programa Java.

Paquetes gráficos de las JFC

Las JFC (Java Foundation Classes) son parte de la API de Java compuesto por clases que sirven para crear interfaces gráficas visuales para las aplicaciones y applets de Java.

Así como Sun presenta estas JFC, Microsoft ha desarrollado otro paquete propio con el nombre de AFD (Application Foundation Classes).

Las JFC contienen dos paquetes gráficos: AWT y Swing.

  • AWT: Presenta componentes pesados, que en cada plataforma sólo pueden tener una representación determinada. Está disponible desde la versión 1.1 del JDK como java.awt.
  • Swing: Presenta componentes ligeros, que pueden tomar diferente aspecto y comportamiento pues lo toman de una biblioteca de clases. Está disponible desde la versión 1.2 del JDK como javax.swing aunque antes se podían encontrar versiones previas como com.sun.java. o como java.awt.swing.

Clases de AWT

Jerarquía de clases de AWT

Este paquete viene incluido en la API de Java como java.awt ya desde su primera versión, con lo que las interfaces generadas con esta biblioteca funcionan en todos los entornos Java disponibles (incluyendo navegadores, lo que les hace especialmente eficientes para la creación de applets Java).

  • Component: Esta clase representa a cualquier objeto que puede ser parte de una interfaz gráfica de usuario. Es la clase padre de muchas de las clases del AWT.

Su propósito principal es representar algo que tiene una posición y un tamaño, que puede ser dibujado en la pantalla y que pueda recibir eventos de entrada (que responda a las interacciones con el usuario).

  • Container: La clase Container sabe cómo mostrar componentes embebidos (que a su vez pueden ser instancias de la clase Container).

Estos objetos Container tienen un LayoutManager asociado que define la manera en que van a posicionarse los objetos componentes en su interior.

  • LayoutManager y LayoutManager2: son dos interfaces encargadas de la representación y posicionamiento en pantalla de componentes AWT.
  • Otras clases: Por supuesto AWT no se limita a estas clases. Dentro de esta biblioteca podemos encontrar multitud de clases prefabricadas para facilitar el diseño gráfico.

Clase Component

Su propósito principal es representar algo que tiene una posición y un tamaño, que puede ser dibujado en la pantalla y que pueda recibir eventos de entrada (que responda a las interacciones con el usuario).

La clase Component presenta diversos métodos, organizados para cubrir varios propósitos.

A continuación se explican algunos de ellos.

Tamaño y posición del componente

  • Dimension getSize(); Devuelve la anchura y altura del componente como un objeto de la clase Dimension, que tiene como campos: width (anchura) y heigth (altura).
  • void setSize(int ancho, int largo); Establece la anchura y altura del componente.
  • Dimension getPreferredSize(); Devuelve el tamaño que este componente debería tener.
  • void setPreferredSize(); Establece el tamaño que este componente debería tener.
  • Dimension getMinimumSize(); Devuelve el tamaño mínimo que este componente debería tener.
  • void setMinimumSize(int ancho, int largo); Establece el tamaño mínimo que este componente debería tener.
  • Rectangle getBounds(); Devuelve las coordenadas de este componente como un objeto de la clase Rectangle, que tiene como campos: x, y, width y heigth.
  • void setBounds(int x, int y, int ancho, int largo); Establece las coordenadas de este componente.

Acciones sobre el componente

  • boolean getEnabled(); Comprueba si el componente está o no activo.
  • void setEnabled(boolean); Establece el componente a activo o inactivo.
  • boolean getVisible(); Comprueba si el componente está o no visible.
  • void setVisible(boolean); Establece si el componente está visible o invisible.
  • void paint(Graphics g); Indica al AWT que ha de dibujar el componente g.
  • void repaint(); Indica al AWT que ha de volver a dibujar el componente.
  • void update(Graphics g); Es llamado por AWT cuando se invoca el método repaint(). Por defecto llama a paint().

Eventos de interacción con el usuario

A su vez hay tres tipos de métodos, para la gestión de eventos mediante el nuevo modelo de eventos de AWT (desde la versión 1.1).

Hay tres tipos de métodos:

  • void add_Tipo_Listener(_Tipo_Listener l); Añade un oyente a la espera de algún tipo de eventos sobre este componente.
  • void remove_Tipo_Listener(_Tipo_Listener l); Elimina algún oyente que estaba a la espera de algún tipo de eventos sobre este componente.
  • void process_Tipo_Event(_Tipo_Event e); Procesa eventos del tipo _Tipo_Event enviándolos a cualquier objeto _Tipo_Listener que estuviera escuchando.

En estos métodos _Tipo_ puede ser cualquiera de los siguientes:

Component, Focus, InputMethod, Key, Mouse, MouseMotion.

Clase Container

La clase Container sabe cómo mostrar componentes embebidos (que a su vez pueden ser instancias de la clase Container).

Algunos de los métodos de la clase Container son:

  • Component add(Component c); Añade un componente al contenedor.
  • void print(Graphics g); Imprime el contenedor.
  • void printComponents(Graphics g); Imprime cada uno de los componentes de este contenedor.
  • LayoutManager getLayout(); Devuelve el gestor de impresión (LayoutManager) asociado a este contenedor, que es el responsable de colocar los componentes dentro del contenedor.
  • void setLayout(LayoutManager 1); Establece un gestor de impresión para este componente.

Estos objetos Container tienen un LayoutManager asociado que define la manera en que van a posicionarse los objetos componentes en su interior.

Gestores de impresión

LayoutManager y LayoutManager2 son dos interfaces encargadas de la representación y posicionamiento en pantalla de componentes AWT.

De estas interfaces se proporcionan cinco implementaciones en AWT. Cada una de ellas reparte los objetos de una forma particular:

  • BorderLayout: En cinco lugares: Norte, Sur, Este, Oeste y Centro (North, South, East, West y Center).
  • CardLayout: Permite gestionar varios componentes de los que sólo uno se visualiza a la vez, permaneciendo los demás invisibles debajo.
  • FlowLayout: De izquierda a derecha horizontalmente en cada línea. Cuando sobrepasan una línea se comienza a la izquierda de la siguiente.
  • GridLayout: Es una tabla en la que todas las casillas tienen el mismo tamaño.
  • GridBagLayout: Es una tabla, pero las casillas no tienen que tener el mismo tamaño.

Otras clases

Dentro de esta biblioteca podemos encontrar multitud de clases prefabricadas para facilitar el diseño gráfico.

A continuación explicamos algunas de ellas.

Clases contenedoras (hijas de Container)

  • Panel: Permite hacer una presentación más avanzada que Container mediante la combinación con subpaneles o subclases para crear contenedores personalizados. La clase Applet que sirve para crear applets Java, hereda de esta clase Panel.
  • ScrollPane: Una barra de desplazamiento, horizontal o vertical.
  • Window: Una ventana sin borde.
  • Frame: Una ventana que no tiene borde. Puede tener asociado un objeto Menubar (una barra de herramientas o barra de menú personalizada).
  • Dialog: Una ventana usada para crear diálogos. Tiene la capacidad de ser modal con lo que sólo este contenedor recibiría entradas del usuario.
  • Filedialog: Un diálogo que usa el selector de archivos nativo del sistema operativo.

Clases componentes (hijas directas de Component)

  • Button: Un botón gráfico para el que se puede definir una acción que sucederá cuando se presione el botón.
  • Canvas: Permite pintar o capturar eventos del usuario. Se puede usar para crear gráficos o como clase base para crear una jerarquía de componentes personalizados.
  • Checkbox: Soporta dos estados: on y off. Se pueden asociar acciones que se ejecuten (triggers) cuando el estado cambie.
  • Choice: Menú desplegable de opciones.
  • Label: Cadena de etiqueta en una localización dada.
  • List: Una lista desplegable de cadenas.
  • Scrollbar: Desplegable de objetos Canvas.
  • TextComponent: Cualquier componente que permita editar cadenas de texto.Tiene dos clases hijas:
  • TextField: Componente de texto consistente en una línea que puede ser usada para construir formularios.
  • TextArea: Componente para edición de texto de tamaño variable.

Eventos de AWT

AWT tiene sus propios eventos, que se explican a continuación.

Eventos físicos

Son todos hijos del evento ComponentEvent, que indica algún cambio en un objeto Component:

  • InputEvent: Se ha producido una entrada del usuario. Tiene como eventos hijos KeyEvent (pulsación de una tecla) y MouseEvent (acción sobre el ratón).
  • FocusEvent: Avisa al programa de que el componente ha ganado o perdido la atención (enfoque) del usuario. Esto se deduce de la actividad del usuario (ratón y teclado).
  • WindowEvent: Avisa al programa de que el usuario ha utilizado uno de los controles de ventana a nivel del sistema operativo, como los controles de minimizar o cerrar.
  • ContainerEvent: Se envía cuando se añaden o eliminan componentes a un contenedor.
  • PaintEvent: Evento especial que señala que el sistema operativo quiere dibujar de nuevo una parte de la interfaz. Un componente debe sobreescribir el método paint() o el método update() para gestionar este evento.

Eventos semánticos

Son todos hijos del evento AWTEvent, que es el evento base de la jerarquía de eventos:

  • ActionEvent: Avisa al programa de acciones específicas de componentes como las pulsaciones de botones.
  • AdjustmenteEvent: Comunica que una barra de desplazamiento ha sido ajustada.
  • ItemEvent: Avisa al programa cuando el usuario interacciona con una elección, una lista o una casilla de verificación.
  • TextEvent: Avisa cuando un usuario cambia texto en un componente TextComponent, TextArea o TextField.
  • InputMethodEvent: Avisa que un texto que está siendo creado utilizando un método de entrada está cambiando (se ha escrito algo más...).
  • InvocationEvent: Este evento ejecuta el método run() en una clase Runnable cuando es tratado por el thread del despachador (dispatcher) de AWT.

Véase también

Fuentes

Enlaces externos