HTMLpointHTMLpoint HTMLpoint.com


 Interfaces gráficas: GUI e AWT



Antes de empezar éste que es uno de los capítulos más interesantes del curso, introducimos el paquete awt y explicamos qué es un componente GUI.
Veremos también unos componentes que son contenedores para otros componentes.
El paquete Abstract Window Toolkit pone a disposición del programador una serie de clases e interfaces gráficas.
El paquete java.awt incluye también unos subpaquetes que son:

java.awt.color
java.awt.datatransfer
java.awt.dnd
java.awt.event
java.awt.font
java.awt.geom
java.awt.im
java.awt.image
java.awt.image.renderable
java.awt.print

Analizaremos algunas funciones. Las clases del paquete swing han sido construidas sobre las clases awt. Swuing es actualmente el paquete más utilizado para construir interfaces gráficas y las veremos enseguida.
Awt incluye:

Interfaces ActiveEvent, interfaces para sucesos que saben cómo se han activado.
Adjustable, interfaces para objetos que tienen un valor numérico entre una serie de valores.
Composite, interfaz que sirve para redactar las primitivas gráficas de awt.
CompositeContext, ambiente optimizado para las operaciones de composición de primitivas.
ItemSelectable, interfaz para objetos que incluyen un conjunto de item de los que pueden ser
seleccionados cero o más de uno. (Generalmente se pueden seleccionar por lo menos y al máximo un item. Esta interfaz elimina esta limitación).
LayoutManager, interfaz para las clases que incluirán unos gestores de ajuste de página.
LayoutManager2, como arriba.
MenuContainer, superclase de todos los menús.
Paint, esta interfaz define los colores que hay que utilizar para las operaciones gráficas usando Graphics2D.
PaintContext, ambiente optimizado para las operaciones de redacción de primitivas gráficas usando
Graphics2D.
PrintGraphics, define el contexto para imprimir.
Shape, definicciones para construir una forma geométrica.
Stroke, más decoraciones para las formas.
Transparency, define los tipos más comunes de transparencia.

Clases
AlphaComposite, clase que implementa las composiciones del factor alfa de los colores utilizando el blending y la transparecia de gráfica y las imágenes.
AWTEvent, root de los sucesos de AWT.
AWTEventMulticaster, dispatcher para suceos AWT, eficaz y multiprogramable. Hace el multicast de sucesos a varios componentes.
AWTPermission, para los permisos AWT.
BasicStroke, atributos para las líneas externas de las primitivas gráficas.
BorderLayout, es el primer gestor de ajuste de línea. Estos gestores, que analizaremos dentro de muy poco, sirven apra disponer los elementos (los componentes) en los contenedores. Éste divide el contenedor en 5 partes: norte, sur, este, oeste y centro.
Button, clase de los botones.
Canvas, área en la que se puede dibujar una aplicación.
CardLayout, otro gestor de layout.
Checkbox, CheckboxGroup, CheckboxMenuItem gestionan los botones de tipo booleano (apretado o no apretado)
Choice, presenta un menú a cortina para elegir.
Color, colores en RGB o en otros espacios arbitrarios de colores.
Component, Clase de la que derivan todos los componentes GUI (pulsadores, etiquetas,…)
ComponentOrientation, orientación de los componentes.
Container, contenedor de los componentes.
Cursor, cursores.
Dialog, ventanas de diálogo en las que se indican errores y no sólo eso.
Dimension, cajas que gestionan el tamaño de los componentes, la altura y la anchura.
Event, clase que gestiona los sucesos según el viejo modelo de gestión de los sucesos (Java 1.0). Se ha dejado para que se puedan trabajar las viejas aplicaciones y apliques Java y se declara deprecated. En efecto, este modelo se ha cambiado porque, en situaciones complejas, es decir, con muchos componentes puestos unos encima de otros, no se entendía qué componente recibía el suceso.
EventQueue, cola de sucesos.
FileDialog, dialog especial que gestiona el input y el output del archivo. Es muy cómoda.
FlowLayout, otro gestor del ajuste de línea.
Font, fonts para el texto.
FontMetrics, atributos para las font.
Frame, clase ya analizada que implementa las ventanas con título y marco.
GradientPaint, rellena las figuras con colores lineares.
Graphics, contexto gráfico en el que se puede dibujar.
Graphics2D, nuevo contexto gráfico, incluido con Java 2, que da otras sofisticadas posibilidades al dibujo.
GraphicsConfiguration, describe las características del destino de la gráfica que puede ser el monitor o la impresora.
GraphicsConfigTemplate, utilizada para obtener una GraphicsConfiguration válida.
GraphicsEnvironment, describe los ambientes gráficos y los font que se pueden utilizar para cada específica plataforma de Java.
GraphicsDevice, describe el GraphicDevice que se puede utilizar en un cierto ambiente.
GridBagConstraints, GridBagLayout, GridLayout, gestores del ajuste de línea.
Image, superclase para todas las clases que representan una imágen gráfica.
Insets, representa el borde de un contenedor.
Label, etiqueta.
List, listado
MediaTracker, clase de utilidad para gestionar objetos multimediales.
Menu, menú de tipo pull-down (a descenso).
MenuBar, barra de los menús.
MenuComponent, superclase de todos los componentes de los menús.
MenuItem, Voz de menú.
MenuShortcut, sirve para representar el acelerador para una voz de menú.
Panel, contenedor.
Point, punto en las coordenadas x,y.
Polygon, polígono.
PopupMenu, menú de tipo invisible.
PrintJob, sirve para inicializar y para imprimir.
Rectangle, rectángulo.
RenderingHints, incluye ayudas para el rendering utilizadas por Graphics2D.
RenderingHints.Key, define las teclas utilizadas para controlar los diferentes aspectos del rendering.
Scrollbar, barra de desplazamiento.
ScrollPane, panel con dos barras de desplazamiento.
SystemColor, representa los colores simbólicos de un objeto GUI en un sistema.
TextComponent, superclase de todos los componentes que incluyen el texto.
TextArea, área de testo.
TextField, simple línea de texto.
TexturePaint, cómo rellenar una figura con una texture.
Toolkit, superclase del Abstract Window Toolkit.
Window, ventana (sin borde y barra de menú).

Excepciones
AWTException
IllegalComponentStateException


Errores
AWTError

Visto este recorrido panorámico por el paquete informático, intentaremos comprender para qué sirven estas clases.
Entre todas las clases distinguimos algunas según lo que hacen.
En primer lugar, hemos visto unas clases Frame, Dialog e Windows, que representan unas ventanas. Estas ventanas incluyen unos menús (las primeras dos) y unos componentes GUI y para incluirlos hay que tener unos contenedores. Pertenecen a este tipo Container y Panel. Cada Contenedor puede incluir un Layout Manager que gestiona la colocación de varios componentes en el mismo contenedor y puede incluir incluso otros contenedores, que pueden crear estructuras complejas.
Finalmente hemos visto los verdaderos componentes GUI que se añaden a los contenedores, por ejemplo, Label. En el ejemplo que ponemos a continuación añadimos una label al contenedor del Frame.

import java.awt.*; public class Etiqueta extends Frame
{

Label et=new Label();

public Etiqueta(String etiqueta)
{


et.setText(etiqueta);
setTitle("Etiqueta "+etiqueta);
add(et);
pack();
show();

}

public static void main (String[] a)
{

try
{new Etiqueta(a[0]);}
catch (ArrayIndexOutOfBoundsException e)
{System.out.println("ERROR: teclear java Etiqueta CADENA");};

}

}

Como ya hemos dicho, los GUI van tanto en los Frame como en Applet, por lo tanto se puede pensar en la versión applet del programa anterior.

import java.applet.*;
import java.awt.*;

public class ApplEtiqueta extends Applet
{

Label et=new Label();

public void init ()
{

et.setText("Hola");
add(et);


}


}

Se pondrá en un archivo llamado ApplEtiqueta.java y se invocará desde un archivo html que incluye:

<html>
<head>
<title>

</title>
</head>
<body>
<APPLET code="ApplEtiqueta.class" width=200 height=100>
</APPLET>
</body>
</html>


En el paquete swing todo es muy parecido, aunque la gestión de los contenedores es un poco diferente.


  Volver al inicio de la página