Ahora vamos a trabajar con nuestra clase Ventana8, una ventana que nos permita seleccionar una fecha y dos ciudades (desde y hasta) que simula una ventana de compra de pasajes de, por ejemplo, una terminal de ómnibus.
El ejemplo está basado en uno del libro "Programación Java" de Macary y Nicolas, aunque algo mejorado y ampliado.
En nuestra ventana podremos entrar una fecha a mano o directamente mediante los botones Hoy y Mañana, elegiremos la ciudad de salida y la de llegada de dos listas, y presionaremos luego un botón que nos mostrará los servicios disponibles, nos permitirá comprar los pasajes, etc.
A medida que entramos los datos, en el botón se irá mostrando el detalle de lo que se fue seleccionando.
Nuestra ventana quedará más o menos así:
Empecemos por armar la estructura de la clase Ventana8:
import java.awt.*;
class Ventana8 extends Frame {
hija de Frame
aquí agregaremos luego
algunas variables para guardar datos
(ciudades de salida y llegada, fecha)
button ok;
también el botón de compra de pasajes
boolean enApplet; y otra para indicar si es un applet o no
Ventana8 (String titulo, boolean enApplet) {
un constructor
super(titulo); llama al de Frame
this.enApplet = enApplet;
guardamos esto
aquí crearemos los botones, listas, etc
con sus valores iniciales
y los pondremos en la ventana.
por ejemplo:
ok = new Button("Viaje: de ? a ? el ?/?/?");
add("South",ok);
pack(); dimensionamos la ventana
show();
y la mostramos!
}
public boolean handleEvent(Event e) { para manejar los eventos
if (e.id
Event.WINDOW_DESTROY) { cerrar la ventana
if (enApplet) dispose();
else System.exit(0);
}
aquí miraremos si se presionó un botón
o se eligió algo de una lista
y actuaremos en consecuencia
return super.handleEvent(e); los demás eventos los maneja Frame
}
void ActualizaBoton() {
aquí pondremos un método que servirá
para actualizar el botón de compra de pasajes,
ya que el texto del mismo se actualiza cada
vez que se selecciona una ciudad o se cambia la fecha
}
void Activar() {
y aquí un método para cuando se presione
dicho botón, que se supone que va a consultar
una base de datos y abrir una ventana
para vendernos el pasaje
}
}
Nuestro programa ya funciona! Aunque un poquito incompleto, claro...
Igual vamos a analizarlo un poco el constructor, que es lo más interesante aquí.
Primero llamamos al constructor de la clase madre, que se encarga de crear la ventana:
Ventana8 (String titulo, boolean enApplet) { un constructor
super(titulo); llama al de Frame
Esto sería como llamar a super.Frame(titulo), o bien Frame(titulo), ya que el método constructor tiene el mismo nombre de la clase. Luego, con:
this.enApplet = enApplet; guardamos esto
asignamos a nuestra variable enApplet de la clase el valor del parámetro que se pasó al constructor, que se llama igual. El prefijo this, que se refiere a la instancia particular de la clase, permite diferenciar uno de otro (esto es válido tanto para variables como para métodos).
ok = new Button("Viaje: de ? a ? el ?/?/?");
add("South",ok);
Aquí hemos creado un botón ubicado al pie de la ventana (por ahora lo único que pusimos), y luego dimensionamos la ventana y la mostramos:
pack(); dimensionamos la ventana
show(); y la mostramos!