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