Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Veremos ejemplos de cómo se añaden botones a un panel para la interacción del usuario
con la aplicación, pero antes vamos a ver la creación de botones como objetos.
Button boton;
Eventos Button
Cada vez que el usuario pulsa un botón, se produce un evento, de la misma forma que se
produce un evento cuando se aprieta el botón del ratón. Los eventos de pulsación de un
botón se pueden capturar sobrecargando el método action():
System.out.println( (String)obj );
else
La distinción entre todos los botones existentes se puede hacer utilizando el objeto destino
pasado por el objeto Event y comparándolo con los objetos botón que hemos dispuesto en
nuestro interface:
import java.awt.*;
import java.applet.Applet;
Button b1,b2,b3;
this.add( b1 );
this.add( b2 );
this.add( b3 );
if( evt.target.equals( b1 ) )
if( evt.target.equals( b2 ) )
if( evt.target.equals( b3 ) )
return true;
}
}
Botones de Pulsación
Los botones presentados en el applet son los botones de pulsación estándar; no obstante,
para variar la representación en pantalla y para conseguir una interfaz más limpia, AWT
ofrece a los programadores otros tipos de botones.
Botones de Lista
Los botones de selección en una lista (Choice) permiten el rápido acceso a una lista de
elementos. Por ejemplo, podríamos implementar una selección de colores y mantenerla en
un botón Choice:
import java.awt.*;
import java.applet.Applet;
Choice Selector;
public void init() {
Selector.addItem( "Rojo" );
Selector.addItem( "Verde" );
Selector.addItem( "Azul" );
add( Selector );
return true;
import java.awt.*;
import java.applet.Applet;
Checkbox Relleno;
add( Relleno );
Botones de Selección
Los botones de comprobación se pueden agrupar para formar una interfaz de botón de radio
(CheckboxGroup), que son agrupaciones de botones Checkbox en las que siempre hay un
único botón activo.
import java.awt.*;
import java.applet.Applet;
CheckboxGroup Radio;
Botones Autocontenidos
import java.applet.Applet;
public BotonAceptar() {
setLabel( "Aceptar" );
return true;
BotonAceptar boton;
Es de hacer notar que no hay un método action() en la clase applet BotonAuto, la clase
BotonAceptar manejará sus eventos. Si se hubiesen colocado otros objetos en el applet, se
podría haber usado un método action() para tratar los eventos de esos objetos.
AWT permite hacer interfaces gráficas mediante artefactos de interacción con el usuario, como
botones, menús, texto, botones para selección, barras de deslizamiento, ventanas de diálogo,
selectores de archivos, etc. Y por supuesto despliegue gráfico general. La siguiente figura muestra
algunos de estos artefactos de interacción:
En la parte superior hay una etiqueta que dice label. La aplicación usa las etiquetas para
mostrar texto.
A la izquierda hay un área para texto que contiene:
o Un superficie para ingresar texto
o Una barra de deslizamiento vertical
o Una barra de deslizamiento horizontal
A la derecha se observa una lista de ítemes que contiene:
o Una superficie para mostrar texto
o Una barra de deslizamiento (sólo aparece si es necesario)
Al centro hay un canvas, donde la aplicación dibuja figuras geométricas y/o texto.
Abajo hay un panel de componentes con:
o Un campo para ingreso de texto (una sola línea)
o Un botón
o Un botón de encendido/apagado que dice checkbox
La clase de los contenedores sirve para crear áreas en la ventana cuyo único fin es colocar
otras componentes en su interior. Hay dos tipos de contenedores:
Panel: sirve para colocar botones, etiquetas, etc. En particular un applet es un panel.
Window: sirve para crear nuevas ventanas independientes del browser Web. Es decir
ventanas que serán manejadas por el administrador de ventanas de la plataforma (Motif,
Windows, etc.). Una ventana independiente puede ser:
o Frame es un tipo de ventana en donde se pueden colocar menús.
o Dialog es un tipo de ventana para dialogar con el usuario. Se usan para colocar
botones, etiquetes, etc. Es decir cumple la misma función que un panel, pero en
una ventana independiente. En particular FileDialog es un artefacto para que el
usuario escoja un archivo.
Etiquetas:
Label etiq= new Label("Label", Label.CENTER);
Areas de texto:
TextArea textArea= new TextArea("TextArea", 5, 20);
La lista de ítemes:
List lista = new List(3, false);
for (int i = 1; i <= 10; i++) {
lista.addItem("List item " + i);
}
Las componentes de AWT se manipulan mediante métodos. En éste la lista se llena usando
addItem.
Etc.
Artefactos complejos
Los artefactos que hemos visto hasta el momento son simples porque la plataforma sabe
como dibujarlos y qué tamaño deben ocupar. Es decir la aplicación no necesita especificar
tamaño ni forma.
Del mismo modo, AWT invoca los métodos minimunSize y preferredSize para conocer el
tamaño mínimo y preferido de una componente. Botones, listas, barras de deslizamiento,
etc. han redefinido estos métodos.
Entonces en el nuevo canvas también se redefinen estos métodos para indicar el tamaño
apropiado. Si estos no se redefinen el canvas podría quedar reducido a un tamaño 0. El
nuevos canvas puede determinar su tamaño real en la ventana consultando su propio
método size.
Los contenedores usan organizadores (layout manager) para distribuir los artefactos en la
superficie de despliegue de la mejor forma. Cada tipo de contenedor tiene su propio
organizador. Por ejemplo los paneles usan FlowLayout que coloca los artefactos de
izquierda a derecha.
Para el contenedor de la raiz (Gui) definimos explícitamente un organizador por medio de:
// Crear panel
Panel bottomPanel = new Panel();
// Crear artefactos
texto= new TextField("TextField");
boton= new Button("Button");
check= new Checkbox("Checkbox");
// Agregarlos al panel
bottomPanel.add(texto);
bottomPanel.add(boton);
bottomPanel.add(check);
Para colocar los artefactos en el frame (es decir en un objeto de la clase Gui) se usa el método add,
pero con un argumento adicional que dice si cada artefacto se agrega a la izquierda, arriba, etc.
Esto es específico del organizador BorderLayout.
// Define el organizador
setLayout(new BorderLayout());
// Crear artefactos
...
// Agregar artefactos
add("Center", canvas);
add("North", etiqueta);
add("West", areaTexto);
add("East", lista);
// Agregar el panel
add("South", bottomPanel);
Cuando se invoca pack en el frame se invoca el organizador que asigna un rectángulo a cada
artefacto. A estas alturas todavía no se muestra en la pantalla la ventana. Para realizar esto se
invoca el método show del frame.