Sunteți pe pagina 1din 43

AWT

Introduccin Componentes

y contenedores Elementos Bsicos Administradores de diseo Ventanas Manejo de eventos Tipos y auditores de evento Lnea de Trabajo Bibliografa

Introduccin

AWT = Abstract Window Toolkit


(Juego de Herramientas de Ventanas Abstracto)

Permite el desarrollo de interfaces grficas de usuario rpida y fcilmente. Contiene una mezcla de los componentes GUI ms simples. La mayora de sus clases e interfaces se pueden usar en:

applets aplicaciones

El paquete bsico es java.awt.*


2

Componentes y Contenedores

Component: es la superclase del conjunto de clases del AWT. Container: se usa para definir componentes que pueden contener a otros componentes.
java.lang.Object | +--java.awt.Component | +--java.awt.Container
3

Componentes y Contenedores

Component: incluye mtodos para trabajar con


manipuladores de eventos imgenes fuentes colores

Container: ofrece mtodos para manipular los componentes


aadir recuperar mostrar contar eliminar trabajar con administradores de diseo

La Primera Ventana

import java.awt.*; import java.awt.event.*; class Ventana extends Frame{ public Ventana(){ super ("Ejemplo de Ventana"); inicializacionComponentes(); addWindowListener(new AdaptadorVentana());
setSize(300,200);

setVisible(true); } private void inicializacionComponentes(){ // Establecer Gestor de Posicionamiento //Crear Componentes Grficos // Aadir al contenedor } public static void main(String arg[]){ Ventana f = new Ventana(); }
private class AdaptadorVentana extends WindowAdapter{

public void windowClosing(WindowEvent e){ System.exit(1);


} }

Elementos Bsicos: Botones


Button (Botn)

Se utilizan para ejecutar alguna accin asociada cuando el usuario lo pulsa. Dos constructores:
Button() Button(String label)

Ejemplo:
Button boton=new Button(Aceptar);
6

Elementos Bsicos: Label


Label (Etiqueta)

Se utilizan para escribir cadenas de caracteres alineadas dentro de los limites del objeto de este tipo. Tres constructores:
Label() Label(String label) Label(String label, int aligment)

Ejemplo:

Label etiqueta=new Label(Bienvenido,Label.CENTER);


7

Elementos Bsicos: Checkbox


Checkbox (Casilla de verificacin)


Representa una casilla de verificacin a seleccionar. Para comprobar el estado getState Para establecer el estado setState Se pueden asociar en grupos dentro de un elemento CheckboxGroup

Ejemplo:
Checkbox check=new Checkbox(One,grupoCheck, true); Nota: grupoCheck es una instancia de un objeto CheckboxGroup
8

Elementos Bsicos: CheckboxGroup


CheckboxGroup (Agrupacin de Casilla de verificacin)


Agrupa un conjunto de checkbox de manera que slo se puede seleccionar uno de ellos. Para comprobar la casilla activa
getSelectedCheckBox

Para establecer la casilla activa


setSelectedCheckBox
CheckboxGroup cbg = new CheckboxGroup(); add(new Checkbox("one", cbg, true)); add(new Checkbox("two", cbg, false)); add(new Checkbox("three", cbg, false));
9

Ejemplo:

Elementos Bsicos: Choice


Choice (Seleccin)

Seleccionar una opcin de entre varias visualizando solo una de ellas. Para aadir elementos: addItem Para contar los elementos: countItems Para seleccionar un elemento: select Para obtener el elemento asignado: getSelectedItem Para establecer el ndice del elemento asignado: getSelectedIndex
Choice colorChooser = new Choice(); colorChooser.add("Green"); colorChooser.add("Red"); colorChooser.add("Blue");
10

Ejemplo:

Elementos Bsicos: TextField


TextField (Campos de texto)

Implementa una zona de entrada de texto en una sola lnea. Para cambiar el texto setText Para obtener el texto getText
TextField tf1 = new tf2 = new tf3 = new tf4 = new tf1, tf2, tf3, tf4; TextField(); TextField("", 20); TextField("Hello!"); TextField("Hello", 30);

Ejemplo:

11

Elementos Bsicos: TextArea


TextArea (Campos de rea de texto)

Implementa una zona de entrada de varias lneas de texto.Incluye su propia barra de desplazamiento. Para cambiar el texto disponemos de mtodos: appendText, insertText y replaceText. Para obtener el texto getText.

Ejemplo:
new TextArea("Hello", 5, 40);
12

Elementos Bsicos: Scrollbar


Scrollbar (Barra de desplazamiento)

Permiten seleccionar un valor entre un mnimo y un mximo determinado. Disponemos de los mtodos: getValue, setValue, getMinimum y getMaximum.

Ejemplo:

ranger = new Scrollbar(Scrollbar.HORIZONTAL, 0, 60, 0, 300); add(ranger);


13

Administradores de diseo: Descendientes de Container


Panel

Es un contenedor genrico que se puede mostrar dentro de applets y aplicaciones. Es un contenedor desplazable que puede tener barras de desplazamiento verticales y horizontales. Ofrece unas subclases para las ventanas principales de aplicacin, objetos Frame y ventanas Dialog.
Estas tres clases cumplen la funcin de hospedar a los componentes ya vistos pudiendo tener asociado un gestor de organizacin (LayoutManager).

ScrollPane

Window

14

Administradores de diseo: Container


Cada Container tiene asociado un administrador de diseo que establece la forma de colocar los componentes dentro de un Container. El administrador de diseo debe implementar la interfaz LayoutManager.

La interfaz LayoutManager2 amplia sus funciones.

Para establecer el LayoutManager se usa el mtodo setLayoutManager del Container. Existen varios administradores de diseo:

FlowLayout BorderLayout GridLayout GridBagLayout CardLayout


15

Administradores de diseo: Container


Como trabajar con Paneles


Creacin del panel


Panel p = new Panel ();

Aadir un administrador de diseo al panel


p.setLayout(new FlowLayout());

Aadir los componentes al panel


Label b = new Label(Dentro del panel); p.add(b);

Si no es un root Panel se aade al panel principal como un componente mas


frame.add(p);

Comentarios

Todas las ventanas (dialogo - principales) y applet tienen asociado un panel inicial Cuando el GUI es complicado los paneles se modelan en clases independientes extendiendo de la clase Panel
16

Administradores de diseo: Container


Ejemplo

//Creacin de variables de instancia private Label label1; private Panel p; ... //Creacin de un container p = new Panel();
//Establecer administradores de diseo para los contenedores

this.setLayout(new FlowLayout()); p.setLayout(new FlowLayout());


//Creacin de componentes

label1 = new Label("Dentro de un Panel");


//Aadir componentes a los contenedores

p.add(label1); this.add(p);
17

Administradores de diseo: FlowLayout


Se colocan los elementos desde la esquina superior izquierda, de izquierda a derecha y de arriba a abajo. La separacin entre componentes puede indicarse en el constructor.

(Redimensionar la ventana para observar la recolocacin de los componentes)

//Creacin de variables de instancia //this es la autoreferencia de un objeto Frame this.setLayout(new FlowLayout()); this.add(new Button("Boton 1")); this.add(new Button("Boton 2")); this.add(new Button("Boton 3")); this.add(new Button("Nombre Largo Boton 4")); this.add(new Button("5"));

18

Administradores de diseo: BorderLayout


Se colocan los elementos siguiendo una distribucin en zonas: arriba, abajo, izquierda, derecha y centro. Los elementos de los extremos ocupan el espacio que les sea necesario. El central ocupa todo el que quede disponible.

// Asignacion del administrador de diseo

//this es la autoreferencia de un objeto Frame

this.setLayout(new BorderLayout()); // Aadir componentes al panel Button button = new Button("Boton 1 (PAGE_START)"); this.add(button, BorderLayout.PAGE_START); button = new Button("Boton 2 (CENTER)"); this.add(button, BorderLayout.CENTER); button = new Button("Boton 3 (LINE_START)"); this.add(button, BorderLayout.LINE_START); button = new Button("Boton 4 (PAGE_END)"); this.add(button, BorderLayout.PAGE_END); button = new Button("Boton 5 (LINE_END)"); this.add(button, BorderLayout.LINE_END);

19

Administradores de diseo: GridLayout


Se organizan los elementos por cuadriculas. Todos los elementos tienen el mismo tamao. El constructor se usa para determinar el nmero de cuadrculas. Se puede indicar huecos entre las Cuadriculas Constructores

GridLayout(int filas, int colums) GridLayout(int filas, int colums, int xhueco, int yhueco)

/ Asignacin del administrador de diseo /this es la autoreferencia de un objeto Frame his.setLayout(new GridLayout(3,2,2,2)); / Aadir componente al panel utton button; or (int i=1;i<=6;i++){ button= new Button("Boton " + i); this.add(button);
20

Administradores de diseo: GridBagLayout


Se organizan los elementos por cuadrculas. Los elementos pueden ocupar ms de una fila o columna. Usa la clase GridBagConstraints. Se usa para identificar los parmetros de posicionamiento de un componente.

21

Administradores de diseo: CardLayout


Solo se ve uno de sus componentes en cada momento. Sirve como base para tener varias ventanas una debajo de otra. Se puede asignar a cualquier contenedor Son especialmente tiles con contenedores del tipo JTabbedPane Capa 1 Capa 2 Capa 3
22

Administradores de diseo: Nulo


Se permite trabajar sin administradores de diseo Se indica la posicin absoluta de cada componente en el contenedor con el mtodo setBounds.

setBounds(int x,int y,int anchura,int altura)

/ Asignacion del administrador de diseo nulo

/this es la autoreferencia de un objeto Frame

his.setLayout(null); utton boton1 = new Button("Boton 1"); oton1.setBounds(30,30,200,100); his.add(boton1);

utton boton2 = new Button("Boton 2"); oton2.setBounds(200,100,100,100); his.add(boton2);


23

Ventanas

Para el trabajo con ventanas tenemos:


Window: ventana de alto nivel sin bordes ni barra de mens. Frame: subclase de Window Dialog: subclase de Window tiene una barra de ttulo, esquinas para cambiar de tamao y una barra de men. Puede ser la ventana principal o secundaria. setVisible(boolean)para mostrar y esconder el Frame. setMenuBar cambia la barra de men. setTitle cambia el ttulo de la ventana. ventana de dialogo asociada a una ventana de nivel superior
24

Frame: subclase de Window.


Dialog

Manejo de Eventos:IntroduccinI

El usuario se comunica con los programas de ventana ejecutando acciones sobre los componentes grficos.

Estas acciones tienen como resultado la generacin de eventos.

Los programas de ventanas son conducidos por eventos. El JDK 1.0.2 admita un enfoque modelo heredado.

Se devuelve true o false si el componente gestiona el tipo de evento. Si no se gestiona se enva al contenedor del objeto, as sucesivamente.

El JDK 1.1 introduce el enfoque delegacin de eventos.


Entrega los eventos a objetos especficos. Menos complejo y ms eficaz.

25

Manejo de Eventos: IntroduccinII


La clase java.util.EventObject es la clase de nivel superior de la jerarqua de eventos. Esta clase ofrece:

Una variable source, origen del evento. Un mtodo getSource() recupera el objeto fuente del evento. Un solo constructor que toma como argumento el objeto origen del evento.

La clase java.awt.AWTEvent hereda de la clase java.util.EventObject para admitir los eventos de AWT.
Recoger evento Registra auditor Procesar evento
addXXXListener()

Componente

Listener
26

Manejo de Eventos: Introduccin


III

Asociacin/registro de auditores/oyentes/listener

Cada componente puede tener asociado varios tipos de auditores a travs de una interface. Ej: A un botn se le puede asociar un oyente que implemente la interface java.awt.event.ActionListener
... b = new Button("Boton"); b.addActionListener(new Oyente()); // Registrar auditor ... class Oyente implements ActionListener{ public void actionPerformed(ActionEvent e){ ... } }

Recoger evento Registra auditor

Procesar evento
addActionListener()

Componente

Listener
27

Enva evento

Manejo de Eventos: Introduccin


IV

Ejemplo:

class Ventana extends Frame{ private Button b; public Ventana(){ super ("Ejemplo de Ventana"); inicializacionComponentes(); setSize(300,200); setVisible(true); } private void inicializacionComponentes(){ setLayout(new FlowLayout()); b = new Button("Boton"); b.addActionListener(new Oyente()); add(b); } public static void main(String arg[]){ Ventana f = new Ventana(); } private class Oyente implements ActionListener{ public void actionPerformed(ActionEvent e){ Button baux=(Button) e.getSource(); baux.setBackground(Color.RED); } } } 28

Se tiene un botn con un oyente asociado El oyente audita al componente y realiza operaciones en funcin de los eventos recibidos por el botn. En el ejemplo el oyente cambia el color del botn cuando ste es pulsado.

Manejo de Eventos: Introduccin


Ejercicio:

Realizar una Ventana con un Button El oyente que audita al botn cambiar alternativamente los colores de un objeto cuando ste es pulsado (azul rojo)

29

Manejo de Eventos: Consideraciones de diseo I


Implementacin de oyentes

Implementacin de interface
Ventaja tiene acceso a la parte privada de la clase

class Ventana extends Frame implements ActionListener{ private Button b; ... b.addActionListener(this); ... //Mtodo de la interface ActionListener public void actionPerformed(ActionEvent e){ Button baux=(Button) e.getSource(); baux.setBackground(Color.RED); } }//Fin class Ventana
30

Manejo de Eventos: Consideraciones de diseo II


Implementacin de oyentes

Clases internas (inner)

Ventajas tiene acceso a la parte privada de la clase que la contiene (outer) y mantiene un encapsulamiento del oyente dentro de la clase class Ventana extends Frame{ private Button b; ... b.addActionListener(new Oyente()); ...
//Clase interna tiene acceso a la parte privada de Ventana

private class Oyente implements ActionListener{ public void actionPerformed(ActionEvent e){ Button baux=(Button) e.getSource(); baux.setBackground(Color.RED); } }//Fin class Oyente }//Fin class Ventana

31

Manejo de Eventos: Consideraciones de diseo III


Implementacin de oyentes

Clases externas
El oyente se asocia igual que con clases internas La clase Auditor (class Oyente) no puede acceder a la zona privada de la clase que le contiene (class Ventana)

Clases annimas

class Ventana extends Frame{ private Button b; ... b.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ Button baux=(Button) e.getSource(); baux.setBackground(Color.RED); });//Fin class annima }//Fin class Ventana
32

Manejo de Eventos: Consideraciones de diseo IV


Asociacin de oyentes

Posibilidades de asociacin
n oyentes a 1 componente
Oye nte 1 Oye nte 2 Oye nte 3 Co mpon ente

1 oyente a n componentes
Oyente

Componente 1 Componente 2

Componente n

1 oyente a 1 componente
Oyente Compon ente

33

Manejo de Eventos: Consideraciones de diseo V


Asociacin de oyentes

b1 = new Button("Boton dos listener"); b2 = new Button("Boton un listener"); t1 = new TextField(10); //Asociacin n a 1 b1.addActionListener(new Oyente1()); b1.addActionListener(new Oyente2()); //Asociacin 1 a n b2.addActionListener(new Oyente1()); private class Oyente1 implements ActionListener{ public void actionPerformed(ActionEvent e){ Button baux=(Button) e.getSource(); baux.setBackground(Color.RED);
} }//Oyente1

private class Oyente2 implements ActionListener{ public void actionPerformed(ActionEvent e){ t1.setText("Boton pulsado"); }

34

Tipos y auditores de evento


Tipos de eventos (heredan de java.awt.AWTEvent)


Eventos Descripcin

ActionEvent AdjustmenEvent ComponentEvent

Pulsacin de botones o la seleccin de elementos de men. Acciones de desplazamiento. Cambios en la posicin, foco o tamao de un componente de ventana, o una entrada de teclado u otra accin del ratn. Cambios en el texto que se introducen a travs de un mtodo de entrada. Cambios en el estado de un componente como la seleccin de un elemento de la lista. Cambios en los textos
35

InputMethodEvent ItemEvent TextEvent

Tipos y auditores de evento


II

Tipos de eventos (heredan de java.awt.AWTEvent)

Eventos FocusEvent InputEvent

Descripcin Cambios en el estado de un foco de entrada de un componente. Se clasifican en KeyEvent y MouseEvent para cubrir los eventos que generan las acciones del teclado y los eventos de bajo nivel del ratn. eventos asociados a la suma y eliminacin de los componentes de un contenedor. Se genera el dibujo/redibujo de una ventana. la generan eventos como la apertura, cierre y minimizacin de una ventana.
36

ContainertEvent PaintEvent WindowEvent

Tipos y auditores de evento


III

Las clases AWTEvent y sus subclases dirigen los eventos haca los objetos registrados como oyentes. Los oyentes (auditores) implementan la interfaz java.util.EventListener (no define constantes ni mtodos). Tipos de auditores (heredan java.awt.event.EventListener )
Auditores Eventos asociados

ActionListener AdjustmentListener ComponentListener ContainerListener FocusListener InputMethodListener

ActionEvent AdjustmenEvent ComponentEvent ContainerEvent FocusEvent InputMethodEvent


37

Tipos y auditores de evento


Tipos

IV

de auditores (heredan java.awt.event.EventListener

Auditores

Eventos asociados

ItemListener KeyListener MouseListener TextListener WindowListener

ItemEvent KeyEvent MouseEvent TextEvent WindowEvent

MouseMotionListener MouseEvent

38

Tipos y auditores de evento


Clases adaptadoras

Por comodidad se ofrecen clases adaptadoras que implementan las interfaces de audicin de eventos. Se pueden utilizar para pasar por alto mtodos especficos de manejo de eventos.
Auditores Clases adaptadoras que implementan el auditor

ComponentListener ContainerListener FocusListener KeyListener MouseListener MouseMotionListener WindowListener

ComponentAdapter ContainerAdapter FocusAdapter KeyAdapter MouseAdapter MouseMotionAdapter WindowAdapter


39

Tipos y auditores de evento


VI

Relacin componentes awt/swing y auditores


Los componentes awt/swing descienden de awt.Component Se puede asignar los siguientes Listener
component listener focus listener key listener mouse listener mouse-motion listener mouse-wheel listener (introducido en 1.4)

Dependiendo del tipo de componente podr tener adems otros listener asociados

40

Tipos y auditores de evento


VII

Relacin componentes awt y auditores


document,undo able edit

window

change

action

caret

item

Componentes

button check box radio button text area text field Frame

X X X X X X

X X X X X

X X X

X
41

Lnea de Trabajo

JFC = Java Foundation Classes Agrupa a AWT y lo amplia con nuevas APIs como

Swing Java 2D, Java 3D Drag-and-Drop Accessibility

Swing es parte de JFC ... aunque con distintas caractersticas que AWT. Permiten elaborar interfaces grficas ms potentes.

http://java.sun.com/docs/books/tutorial/uiswing/compon ents/components.html complejidad de manejo problema en el soporte por parte de los navegadores.

Desventajas:
42

Bibliografa

[Jaworski 1999] Jaworski, J. (1999). Java 1.2 Al Descubierto.. Prentice Hall. Captulo 6, Construccin de GUI. [Walrath et al., 2004] Walrath,K., Campione,M., Huml A., Zakhour S., (2004). The JFC Swing Tutorial: A Guide to Constructing GUIs, Second Edition. Addison-Wesley .
Disponible en formato electrnico en ingls http://java.sun.com/docs/books/

[Horstmann et al., 2003] Horstmann, G.S., Cornell, G. (2003) Java 2. Fundamentos. Volumen 1. Prentice Hall

Java2 SDK, Standard Edition Documentation


43

S-ar putea să vă placă și