0% encontró este documento útil (0 votos)
176 vistas

Manual Java II

Este documento presenta el paquete AWT (Abstract Window Toolkit) en Java, que proporciona los componentes y herramientas básicas para crear interfaces gráficas. Explica la jerarquía de clases de AWT, incluyendo componentes, contenedores y gestores de layout. También muestra ejemplos de código para varios componentes comunes como botones, etiquetas y cuadros de texto. Finalmente, introduce brevemente la gestión de eventos en AWT.

Cargado por

vjlcro
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
176 vistas

Manual Java II

Este documento presenta el paquete AWT (Abstract Window Toolkit) en Java, que proporciona los componentes y herramientas básicas para crear interfaces gráficas. Explica la jerarquía de clases de AWT, incluyendo componentes, contenedores y gestores de layout. También muestra ejemplos de código para varios componentes comunes como botones, etiquetas y cuadros de texto. Finalmente, introduce brevemente la gestión de eventos en AWT.

Cargado por

vjlcro
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 25

AULA

MENTOR

educacion.es

Nipo: 820-11-347-3
Autor:
Pilar Aranzazu Ocaa Diaz-Ufano y Jos
Miguel Ordax Cass
Edicin y maquetacin de contenidos:
Susana Prez Marn

Diseo grfico e ilustracin de portada:


Mara Guija Medina

MDULO A

UNIDADES DIDCTICAS:

1. Paquete AWT
2. Paquete Swing
3. Applets

MDULO A

Paquete AWT

Tema 1.1

ndice de la unidad:

1. Introduccin
2. Componentes visuales AWT
3. Layout Managers
4. Gestin de eventos
5. Otras clases
6. Editor visual AWT/Swing en Eclipse

Unidad 1.1 Paquete AWT

En las siguientes Unidades, vamos a estudiar la programacin visual en Java. Comenzaremos en esta Unidad repasando los fundamentos bsicos sobre los que se
apoya el funcionamiento de los interfaces grfico en Java, partiendo del primer
framework que se implement e incluy en la JDK: AWT. En la siguiente Unidad veremos otro framework posterior ms flexible y potente llamado Swing (que en la
JDK 1.2 se incluy como parte del lenguaje), pero que se apoya y basa en todo lo
estudiado en la AWT.

1. Introduccin
AWT, son las siglas de: Abstract Window Toolkit
Es una librera de clases Java para el desarrollo de interfaces de usuario grficas
(GUI).
Por tratarse de cdigo Java, las aplicaciones sern independientes de la plataforma.
No as su apariencia visual, es decir, su Look & Feel, que ser el de la plataforma
donde se ejecute.
Es la librera visual bsica. Sobre ella se construy a posteriori otra ms flexible y
potente: JFC/Swing que trataremos con profundidad en la siguiente Unidad. Pero
los fundamentos bsicos los estableci la AWT.
La AWT se encuentra en el paquete: java.awt.*
Dispone de la mayora de controles visuales estndar:

Button (push, radio y check).

Canvas.

Frame, Dialog.

Label.

List, Choice.

ScrollBar, ScrollPane.

TextField, TextArea.
5

MODULO 1 Interfaces Visuales

Menu.

Los elementos bsicos que componen la librera AWT son:

Los componentes (java.awt.Component) como Buttons, Labels, TextFields, etc....

Los contenedores (java.awt.Container) como los Frames, los Panels,


etc.... que pueden contener componentes.

Los gestores de posicin (java.awt.LayoutManager) que gestionan la disposicin de los componentes dentro de los contenedores.

Los eventos (java.awt.AWTEvent) que avisan de las acciones del usuario.

Como ya hemos comentado en varias ocasiones, en la Programacin Orientada Objetos, y por tanto en el lenguaje Java, siempre existe un diseo jerrquico de herencia. La AWT no es una excepcin:

Unidad 1.1 Paquete AWT

java.awt.Component es una clase abstracta que implementa toda la funcionalidad bsica de las clases visuales.
Tiene mtodos para:

Mostrar y esconder.

Rendering.

Habilitar y deshabilitar, etc...

Y atributos como:

Color del foreground y background.

Tamao y posicin.

Por su lado, java.awt.Container es una clase que implementa la funcionalidad de


contener a otros componentes. Y si nos fijamos en la jerarqua de clase, los contenedores son a su vez componentes.
Algunos contenedores tpicos son:

Window.

Dialog y FileDialog.

Frame.

Panel: contenedor invisible.

MODULO 1 Interfaces Visuales

Luego entonces, los contenedores sirven para agrupar componentes visuales. Pero,
cmo se distribuyen dichos componentes en su interior?
Para

dicho

cometido,

se

utilizan

implementaciones

del

interface

ja-

va.awt.LayoutManager
Cada contenedor tiene asociado un LayoutManager que distribuye los componentes
en el interior del contenedor. Por ejemplo, un Panel tiene asociado por defecto una
instancia de java.awt.FlowLayout
La posicin de los componentes visuales es relativa al contenedor en el que se encuentra. La coordenada 0,0 es la esquina superior izquierda del contenedor.
La clase java.awt.Component implementa varios mtodos para la gestin del tamao y posicionamiento como por ejemplo:

Rectangle getBounds();

void setLocation(int x, int y);

Point getLocation();

void setBounds(int x, int y, int width, int height);

Dimension getSize();

void setSize(Dimension d);

Container getParent();

Por su lado, la clase java.awt.Container posee varios mtodos para acceder a los
componentes que contiene, como por ejemplo:

add(Component c); o add(Component c, Object o); // Inserta el componente


c en el contenedor referenciado.

remove(Component c); // Elimina el componente c del contenedor referenciado.

Component[] getComponents(); // Devuelve un array con los componentes


del contenedor referenciado.

Unidad 1.1 Paquete AWT

A continuacin, listamos los pasos habituales con un ejemplo, para crear un componente visual y aadirlo a un contenedor:

Crear el componente: Button b = new Button();

Aadir el componente al contenedor: unContenedor.add(b);

Invocar

mtodos

sobre

el

componente

manejar

sus

eventos:

b.setText(Ok);

Ejemplo: Desarrollo de un ejemplo bsico de contenedores con componentes:


import java.awt.*;
public class EjemploAWT
{
public static void main(String[] args)
{
Frame frame = new Frame();
frame.setLayout(null);
frame.setBounds(0,0,400,300);
frame.setTitle("Ejemplo AWT");
Panel panel = new Panel();
panel.setLayout(null);
panel.setBounds(50,40,250,220);
panel.setBackground(Color.LIGHT_GRAY);
Button boton = new Button("Aceptar");
boton.setBounds(100,80,100,20);
panel.add(boton);
frame.add(panel);

frame.setVisible(true);
}
}

MODULO 1 Interfaces Visuales

Para poder interactuar con los interfaces visuales, es decir, poder reaccionar y ejecutar cdigo cuando se pulse un botn, se mueva el ratn, se teclee algo, etc... hay
que gestionar los eventos. Trataremos este tema en un apartado posterior de esta
misma Unidad.

2. Componentes visuales AWT


Ya conocemos lo bsico del funcionamiento de la programacin visual. Ahora haremos un repaso mediante ejemplos de cdigo de un gran porcentaje de los componentes visuales existentes en la AWT, mostrando visualmente a que corresponden.
Para profundizar en cada uno de ellos, recomendamos examinar el API.

2.1 java.awt.Frame
import java.awt.Frame;
public class FrameTest
{

10

Unidad 1.1 Paquete AWT

public static void main(String[] args)


{
Frame f = new Frame();
f.setTitle("FrameTest");
f.setSize(200,150);
f.setVisible(true);
}
}

2.2 java.awt.Button
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
public class ButtonTest
{
public static void main(String[] args)
{
Frame f = new Frame();
f.setTitle("ButtonTest");
f.setSize(200,150);
f.setLayout(new FlowLayout());
Button b = new Button("Ok");
f.add(b);
f.setVisible(true);
}
}

2.3 java.awt.Checkbox
import java.awt.Checkbox;
import java.awt.FlowLayout;
import java.awt.Frame;
public class CheckboxTest

11

MODULO 1 Interfaces Visuales

{
public static void main(String[] args)
{
Frame f = new Frame();
f.setTitle("CheckboxTest");
f.setSize(200,150);
f.setLayout(new FlowLayout());
Checkbox c = new Checkbox("Mayor de 18 aos");
f.add(c);
f.setVisible(true);
}
}

2.4 java.awt.CheckboxGroup
import java.awt.*;
public class CheckboxGroupTest
{
public static void main(String[] args)
{
Frame f = new Frame();
f.setTitle("CheckboxGroupTest");
f.setSize(200,150);
f.setLayout(new FlowLayout());
CheckboxGroup cbg = new CheckboxGroup();
Checkbox c1 = new Checkbox("Hombre",cbg,true);
Checkbox c2 = new Checkbox("Mujer",cbg,false);
f.add(c1);
f.add(c2);
f.setVisible(true);
}
}

12

Unidad 1.1 Paquete AWT

2.5 java.awt.Choice
import java.awt.*;
public class ChoiceTest
{
public static void main(String[] args)
{
Frame f = new Frame();
f.setTitle("ChoiceTest");
f.setSize(200,150);
f.setLayout(new FlowLayout());
Choice cbg = new Choice();
cbg.add("Rojo");
cbg.add("Amarillo");
cbg.add("Blanco");
f.add(cbg);
f.setVisible(true);
}
}

2.6 java.awt.Label
import java.awt.*;
public class LabelTest
{
public static void main(String[] args)
{
Frame f = new Frame();
f.setTitle("LabelTest");
f.setSize(200,150);
f.setLayout(new FlowLayout());
Label l1 = new Label("Una etiqueta");
Label l2 = new Label();
l2.setText("Otra etiqueta");
f.add(l1);
f.add(l2);

13

MODULO 1 Interfaces Visuales

f.setVisible(true);
}
}

2.7 java.awt.List
import java.awt.*;
public class ListTest
{
public static void main(String[] args)
{
Frame f = new Frame();
f.setTitle("ListTest");
f.setSize(200,150);
f.setLayout(new FlowLayout());
List l = new List(3);
l.add("Primero");
l.add("Segundo");
l.add("Tercero");
l.add("Cuarto");
f.add(l);
f.setVisible(true);
}
}

2.8 java.awt.Scrollbar
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Scrollbar;
public class ScrollbarTest
{
public static void main(String[] args)
{
Frame f = new Frame();
14

Unidad 1.1 Paquete AWT

f.setTitle("ScrollbarTest");
f.setSize(200,150);
f.setLayout(new FlowLayout());
Scrollbar sb = new Scrollbar(Scrollbar.HORIZONTAL,0,5,-100,100);
f.add(sb);
f.setVisible(true);
}
}

2.9 java.awt.TextField
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
public class TextFieldTest
{
public static void main(String[] args)
{
Frame f = new Frame();
f.setTitle("TextFieldTest");
f.setSize(200,150);
f.setLayout(new FlowLayout());
TextField tf = new TextField("Escribe aqu...");
f.add(tf);
f.setVisible(true);
}
}

2.10 java.awt.TextArea
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextArea;
public class TextAreaTest

15

MODULO 1 Interfaces Visuales

{
public static void main(String[] args)
{
Frame f = new Frame();
f.setTitle("TextAreaTest");
f.setSize(200,150);
f.setLayout(new FlowLayout());
TextArea ta = new TextArea("Escribe aqu...",5,15);
f.add(ta);
f.setVisible(true);
}
}

2.11 java.awt.Menu
import java.awt.*;
public class MenuTest
{
public static void main(String[] args)
{
Frame f = new Frame();
f.setTitle("MenuTest");
MenuBar mb = new MenuBar();
Menu m1 = new Menu("Menu 1");
m1.add(new MenuItem("Opcin 1"));
m1.add(new MenuItem("Opcin 2"));
Menu m2 = new Menu("Menu 2");
m2.add(new CheckboxMenuItem("Opcin 1", true));
m2.add(new CheckboxMenuItem("Opcin 2"));
mb.add(m1);
mb.add(m2);
f.setMenuBar(mb);
f.setSize(200,150);
f.setVisible(true);
}
}

16

Unidad 1.1 Paquete AWT

2.12 java.awt.Dialog
import java.awt.Dialog;
import java.awt.Frame;
public class DialogTest
{
public static void main(String[] args)
{
Frame f = new Frame();
f.setTitle("FrameTest");
f.setSize(200,150);
f.setVisible(true);
Dialog d = new Dialog(f);
d.setTitle("DialogTest");
d.setBounds(50,50,70,50);
d.setVisible(true);
}
}

2.13 java.awt.FileDialog
import java.awt.FileDialog;
import java.awt.Frame;
public class DialogTest
{
public static void main(String[] args)
{
Frame f = new Frame();
f.setTitle("FrameTest");
f.setSize(200,150);
f.setVisible(true);
FileDialog d = new FileDialog(f);
d.setTitle("FileDialogTest");
d.setBounds(50,50,70,50);

17

MODULO 1 Interfaces Visuales

d.setVisible(true);
System.out.println(d.getFile());
// Recibir el nombre del fichero seleccionado.
}
}

3. Layout Managers
Todos los contenedores AWT tienen asociado un LayoutManager para coordinar el
tamao y la situacin de sus componentes. Por ejemplo:

Panel tiene asociado un FlowLayout

Frame tiene asociado un BorderLayout

Cada Layout se caracteriza por el estilo que emplea para situar los componentes en
su interior:

18

Alineacin de izquierda a derecha.

Alineacin en rejilla.

Alineacin del frente a atrs.

Unidad 1.1 Paquete AWT

Por qu debemos usar los Layout Managers?


Porque determinan el tamao y la posicin de los componentes en un contenedor.
Tiene un API que permite al contenedor y al LayoutManager gestionar el cambio de
tamao del contenedor de manera transparente.
Por ltimo, pero no menos importante, consiguen que la aplicacin sea independiente de la resolucin de las mquinas donde se ejecuta.
Todos los layout Managers implementan el interface java.awt.LayoutManager:

3.1 java.awt.FlowLayout
Sita los componentes de izquierda a derecha. Les modifica la posicin pero
no les modifica el tamao.
import java.awt.*;
public class FlowLayoutTest
{
public static void main(String[] args)
{
Frame f = new Frame();
f.setTitle("FlowLayoutTest");
f.setSize(300,150);
f.setLayout(new FlowLayout());
Button b1 = new Button("Button 1");
f.add(b1);
Button b2 = new Button("Button 2");
f.add(b2);
Button b3 = new Button("Button 3");
f.add(b3);
f.setVisible(true);
}
}

3.2 java.awt.BorderLayout

19

MODULO 1 Interfaces Visuales

Se basa en los puntos cardinales. Modifica tanto la posicin como el tamao


de los componentes.
import java.awt.*;
public class BorderLayoutTest
{
public static void main(String[]
args)
{
Frame f = new Frame();
f.setTitle("BorderLayoutTest");
f.setLayout(new BorderLayout());
Button b1 = new Button("Button 1 (NORTH)");
f.add(b1,BorderLayout.NORTH);
Button b2 = new Button("Button 2 (WEST)");
f.add(b2,BorderLayout.WEST);
Button b3 = new Button("Button 3 (CENTER)");
f.add(b3,BorderLayout.CENTER);
Button b4 = new Button("Button 4 (EAST)");
f.add(b4,BorderLayout.EAST);
Button b5 = new Button("Button 5 (SOUTH)");
f.add(b5,BorderLayout.SOUTH);
f.pack(); // El mtodo pack, hace que el contenedor pregunte a su
// LayoutManager el tamao mnimo para que todos sus
// componentes se puedan ver. Y se ajusta a ese tamao
f.setVisible(true);
}
}

3.3 java.awt.CardLayout
Permite al desarrollador intercambiar distintas vistas como si se tratase de
una baraja. Modifica tanto la posicin como el tamao de los componentes.
import java.awt.*;
public class CardLayoutTest

20

Unidad 1.1 Paquete AWT

{
public static void main(String[] args)
{
Frame f = new Frame();
f.setTitle("CardLayoutTest");
f.setSize(300,150);
CardLayout cl = new CardLayout();
f.setLayout(cl);
Button b1 = new Button("Button 1");
f.add(b1,"uno");
Button b2 = new Button("Button 2");
f.add(b2,"dos");
Button b3 = new Button("Button 3");
f.add(b3,"tres");
f.setVisible(true);
cl.show(f,"dos");

// Otras posibilidades: cl.first(f), cl.last(f) y cl.next(f);

}
}

3.4 java.awt.GridLayout
Usa una matriz en la que sita cada uno de los componentes. El tamao de
todas las celdas es igual.
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
public class GridLayoutTest
{
public static void main(String[] args)
{
Frame f = new Frame();
f.setTitle("GridLayoutTest");
f.setSize(300,150);
f.setLayout(new GridLayout(2,3,2,2));
f.add(new Button("Button 1"));

21

MODULO 1 Interfaces Visuales

f.add(new Button("Button 2"));


f.add(new Button("Button 3"));
f.add(new Button("Button 4"));
f.add(new Button("Button 5"));
f.setVisible(true);
}
}

3.5 java.awt.GridBagLayout
Similar al anterior, pero no fuerza a que todos los componentes tengan el
mismo tamao.
import java.awt.*;
public class GridBagLayoutTest
{
public static void main(String[] args)
{
Frame frame = new Frame("GridBagLayoutTest");
frame.setLayout(new GridBagLayout());
Button button = new Button("Button 1");
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 0;
c.gridy = 0;
frame.add(button, c);
button = new Button("Button 2");
c.gridx = 1;
c.gridy = 0;
frame.add(button, c);
button = new Button("Button 3");
c.gridx = 2;
c.gridy = 0;

22

Unidad 1.1 Paquete AWT

frame.add(button, c);
button = new Button("Button 4");
c.ipady = 40;
c.weightx = 0.0;
c.gridwidth = 3;
c.gridx = 0;
c.gridy = 1;
frame.add(button, c);
button = new Button("Button 5");
c.ipady = 0;
c.weighty = 1.0;
c.anchor = GridBagConstraints.PAGE_END;
c.insets = new Insets(10,0,0,0);
c.gridx = 1;
c.gridwidth = 2;
c.gridy = 2;
frame.add(button, c);
frame.pack();
frame.setVisible(true);
}
}

3.6 null LayoutManager


Es otra opcin tambin vlida, que consiste en prescindir del uso de los Layout
Managers. En tal caso, el desarrollador es responsable de ajustar todas las
posiciones y tamaos de los distintos componentes visuales utilizados en la
aplicacin.
import java.awt.Button;
import java.awt.Frame;
public class NullLayoutTest
{
public static void main(String[] args)
{

23

MODULO 1 Interfaces Visuales

Frame f = new Frame();


f.setTitle("NullLayoutTest");
f.setSize(300,150);
f.setLayout(null);
Button b1 = new Button("Button 1");
b1.setBounds(50,25,100,50);
f.add(b1);
Button b2 = new Button("Button 2");
b2.setBounds(125,85,100,50);
f.add(b2);
f.setVisible(true);
}
}

4. Gestin de eventos
Un evento es una encapsulacin de una informacin que puede ser enviada a la
aplicacin de manera asncrona.
Los eventos pueden corresponder a acciones fsicas (ratn y teclado) y a acciones
lgicas.
java.util.EventObject es la clase padre de todos los eventos. Su subclase java.awt.AWTEvent es la clase padre de todos los eventos AWT.
En el siguiente grfico, podemos ver reflejado el funcionamiento de la gestin de
eventos en Java:

24

Unidad 1.1 Paquete AWT

Bsicamente, contamos con dos piezas fundamentales. Un notificador (Notifier),


que es quin generar los eventos, y un escuchador (Listener) que es quien est
interesado en dichos eventos para reaccionar y actuar en consecuencia.
Para que un escuchador, pueda escuchar los eventos de un notificador, ha de subscribirse a estos. En caso de estar subscrito, el notificador, cuando ocurra el evento,
se lo notificar al escuchador. En Java, esto significa enviar un mensaje concreto al
escuchador (ejecutar un mtodo concreto).
El mecanismo que tenemos en Java de poder garantizar que el escuchador implementa dichos mtodos, es forzndole a implementar un interfaz. Y esto lo consigue
mediante el API del mtodo de subscripcin, que solo permite recibir parmetros de
un tipo concreto. Luego el escuchador interesado ha de ser de dicho tipo para poder
subscribirse.
Un escuchador, igual que se subscribe, puede de subscribirse.
Los notificadores pasan la informacin a los escuchadores invocando un mtodo
concreto como ya hemos comentado, pasndole como parmetro un evento que
encapsula toda la informacin necesaria para conocer lo que ha ocurrido.

25

También podría gustarte