Download AWT

Document related concepts
no text concepts found
Transcript
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. Swing 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. Existen 2 tipos de los eventos: eventos del
teclado y el raton y el otro tipo es los eventos de las ventanas.
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.
1
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,…): hay dos tipos: 1. los q pueden tener otros componentes, por ej:ventenas.
Heredan de la clase Container.
2.los simples, como los botones.
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.
2
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
Resumiendo, en una interfaz gráfica,
en primer lugar se programa el aspecto gráfico, es decir, se incluyen los botones, los
menús, etc.
Después se crean y se añaden los oyentes de los sucesos que, según el suceso,
invocan uno u otro método de gestión del programa (pone al día la interfaz, calcula las
funciones del programa de la que es la interfaz gráfica).
Éste es un principio general de la programación de Interfaces Gráficas, es decir, de la
programación de los sucesos. Cada programa que utilizáis funciona de esta forma y cada
programa que escribís también.
El tipo de programación es un poco diferente al que un programador sobre plataforma no
gráficas (tipo Dos, Linux senza X-Win) está acostumbrado y al principio puede resultar no muy
simple. Sin embargo hay que acostumbrarse, después es todo igual.
PASOS PARA CREAR UN GUI:
1. definir los componentes: es decir, se incluyen los botones, los menús, etc.
2. clase q tenga main
3.
4.
5.
6.
7.
crear una ventana:frame evento WindowClosing
main:crear ventana
añadir los componentes a traves de su contenido;tamaño,empaquetar;visible
definir listener
gestion eventos
import java.awt.*;
import java.awt.event.*;
public class Hello
extends Frame{
private Label epigrafe; /*el epigrafe "Hola Mundo" */
private Button okboton; /*el boton OK, con q vamos a cerrar la ventana
/*una clase para atender los eventos del boton:*/
class OkListener implements ActionListener {
public void actionPerformed(ActionEvent e){
System.exit(0); /*sale del programa*/
}
3
}
/*una clase para atender la cerradura de la ventana:*/
class Cerrar extends WindowAdapter{
public void ventanaCerrar(WindowEvent e){
System.exit(0);
}
}
public Hello(){
setTitle("hello"); /*el titulo de la ventana*/
setBounds(50,50,200,200);/*el lugar y el tamaño de la ventana*/
setLayout(new BorderLayout()); /*colocacion en la ventana*/
addWindowListener(new Cerrar());
epigrafe=new Label("hola mundo",Label.CENTER); /*crear la etiqueta*/
add("Center",epigrafe);
okboton=new Button("ok");/*crear el boton ok*/
add("South",okboton);
okboton.addActionListener(new OkListener());
}
public static void main(String[] args) {
Hello H=new Hello();
H.show(); /*visualizar*/
}
}
4