INF 473 Desarrollo de Aplicaciones en Java Desarrollo de Interfaces Gráficas AWT – Abstract Windows Toolkit Prof. José Miguel Rubio jose.rubio.l@ucv.cl jrubio@inf.ucv.cl PUCV Marzo 2008 1 AWT ¿Qué es? Su estructura. Los Los Los Los Componentes Contenedores Gestores de Posición Eventos Guías de estilo 2 AWT - ¿Qué es? Es una librería de clases Java para desarrollar interfaces de usuario gráficas. Es la librería básica y se ha construido una posterior que es la Swing. 3 AWT - Su estructura La librería AWT esta compuesta por: Los Componentes (java.awt.Component), como los Buttons, Labels,.. Los Contenedores (java,awt.containers), contienen componentes. Los gestores de posición (java.awt.LayoutManager), que posiciona los componentes dentro de los contenedores. Los eventos (java.awt.AWTEvent), que nos indican las acciones del usuario. 4 AWT - Los componentes Es una clase abstracta que representa todo lo que tiene una posición, un tamaño, puede ser pintado en pantalla y puede recibir eventos. Los components de AWT son: Label List Scrollbar TextComponent TextArea TextField Button Canvas Checkbox Choice Container Panel ScrollPane Window Dialog FileDialog Frame 5 AWT - Los contenedores Es una clase abstracta derivada de Component, que representa a cualquier componente que pueda contener otros componentes. A su vez son componentes El AWT proporciona varias clases de Contenedores: Panel Applet ScrollPane Window Dialog FileDialog Frame 6 AWT - Gestores de Posición ¿Como controlar dónde añadimos los objetos? Para ello se crearon los Layout Manager, ellos se especifican unas posiciones determinadas en un panel, frame o applet donde añadiremos nuestros componentes o un nuevo panel, al que también le podremos añadir un layout en cuyas posiciones podremos añadir componentes o más panels con layouts.... 7 AWT - Gestores de Posición FlowLayout Es el que tienen los paneles por defecto. Los objetos se van colocando en filas en el mismo orden en que se añadieron al contenedor. Cuando se llena una fila se pasa a la siguiente. Tiene tres posibles constructores: FlowLayout();. FlowLayout(FlowLayout.LEFT[RIGTH][CENTER]); Crea el layout sin añadirle los componentes, con los bordes de unos pegados a otros FlowLayout(FlowLayout.LEFT, gap_horizontal, gap_vertical); Indica la alineación de los componentes: a la izquierda, derecha 8 o centro con espacio entre los componentes. AWT - Gestores de posición GridLayout Crea un grid (malla) y va añadiendo los componentes a las cuadrículas de la malla de izquierda a derecha y de arriba abajo. Todas las cuadrículas serán del mismo tamaño y crecerán o se harán más pequeñas hasta ocupar toda el área del contenedor. Dos posibles constructores: GridLayout(int filas, int columnas); Creará un layout en forma de malla con un número de columnas y filas igual al especificado. GridLayout(int columnas, int filas, int gap_horizontal, int gat_vertical); Especifica espaciados verticales y horizontales entre las cuadrículas. El espaciado se mide en píxeles. 9 AWT - Gestores de Posición BorderLayout Este layout tiene cinco zonas predeterminadas: norte (NORTH) sur (SOUTH) este (EAST) oeste (WEST) centro (CENTER) Al cambiar el tamaño del contenedor se estirarán hacia los lados para llegar a ocupar toda el área disponible, pero sin variar su tamaño en la dirección vertical. Variarán su tamaño en la dirección vertical pero sin nunca variarlo en la dirección horizontal. Crecerá o disminuirá en todas las direcciones para rellenar todo el espacio vertical y horizontal que queda entre las zonas norte, sur, este y oeste 10 AWT - Gestores de Posición BorderLayout Posee dos contructores: BorderLayout(); Que creará el layout simple BorderLayout(int gap_horizontal, int gap_vertical); Creará el layout dejando los gaps horizontales y verticales entre sus distintas zonas. Para añadir más paneles o componentes a este Layout hay una pequeña diferencia, aquí especificamos en el método add la región donde queremos añadir. panel.add(componente_a_añadir, BorderLayout.REGION_que_QUERAMOS); 11 Eventos - Definición Evento: Encapsulamiento de la información que puede ser enviada a la aplicación de manera asíncrona Avisan de las acciones de usuario Manejo de eventos: Se realiza mediante el uso de interfaces definidas en java.awt.event. Listener Interface 12 Eventos - Tipos FISICOS: ComponentEvent ContainerEvent FocusEvent KeyEvent MouseEvent MouseMotionEvent WindowEvent 13 Eventos - Tipos SEMÁNTICOS: ActionEvent AdjustmentEvent ItemEvent TextEvent 14 Eventos - Adapters Adapters: Son clases que tienen definidos todos los métodos de un interfaz concreto. La implementación de dichos métodos está vacía. Llamando a un Adapter y sobreescribiendo los métodos necesarios conseguimos el mismo resultado que implementando directamente el interfaz. Heredando de un adapter extends. Implementando directamente la interfaz implements. 15 Eventos - Métodos de las interfaces LISTENER INTERFACE ADAPTER CLASS ActionListener MÉTODOS actionPerformed AdjustmentListener adjustmentValueChanged ComponentListener ComponentAdapter 4 METODOS ContainerListener ContainerAdapter 2 METODOS FocusListener FocusAdapter 2 METODOS ItemListener itemStateChanged 16 Eventos - Métodos de las interfaces LISTENER INTERFACE ADAPTER CLASS KeyListener KeyAdapter MÉTODOS 3 METODOS MouseListener MouseAdapter 5 METODOS MouseMotionListener MouseMotionAdapter 2 METODOS TextListener WindowListener textValueChanged WindowAdapter 7 METODOS 17 Ejemplo componentesAWT.java 18 19 Guías de estilo - Java Look and Feel Java permite la ejecución de un mismo programa en distintas plataformas utilizando la interfaz gráfica correspondiente, gracias a AWT Con la aparición del conjunto de componentes Swing, parte de las JFC (Java Foundation Classes), se dispone de una apariencia gráfica propia, denominada Metal Además de Metal existen otras apariencias: Motif look and feel Windows look and feel MacOs look and feel 20 Guías de estilo - Java Look and Feel Java Look and Feel MacOS Look and Feel Windows Look and Feel Motif Look and Feel 21 Guías de estilo - Java Swing 22 Guías de estilo - Java Swing 23