Ahora vamos a empezar a crear otros objetos para ir completando nuestra aplicación. Comencemos con las listas de ciudades.
Para eso, vamos a crear un objeto descendiente de Panel que simplemente contenga una lista de ciudades predefinidas y un título que diga "Seleccione ciudad de", y a continuación "salida" o "llegada".
También agregaremos un método
import java.awt.*;
class SelecPueblo extends Panel {
private List listaPueblos;
SelecPueblo (String salidaOllegada) {
setLayout (new BorderLayout (20,20));
armamos el título, que va a ser un Label:
StringBuffer titulo = new StringBuffer();
titulo.append("Seleccione ciudad de ");
titulo.append(salidaOllegada);
titulo.append(": ");
add("North", new Label(titulo.toString()));
armamos la lista de ciudades, que va a ser un List:
listaPueblos = new List (4, false);
listaPueblos.addItem("Buenos Aires");
listaPueblos.addItem("La Plata");
listaPueblos.addItem("Azul");
listaPueblos.addItem("Rosario");
listaPueblos.addItem("Cordoba");
listaPueblos.addItem("Bahía Blanca");
add("South", listaPueblos);
}
public String getDescription() {
return listaPueblos.getSelectedItem();
}
}
No hay mucho para analizar aquí, creo. La variable listaPueblos es privada, pero puede consultarse cuál es la ciudad seleccionada mediante getDescription (que es public). Este método llama al método getSelectedItem de la lista, que devuelve el texto seleccionado.
En el constructor, armamos el texto del título como un StringBuffer. Los objetos StringBuffer son similares a los de clase String pero pueden ser modificados. En cambio los objetos String, una vez creados, no pueden ser modificados directamente: sus métodos (concat, toLowerCase, etc.) simplemente crean un nuevo String con el nuevo valor.
Esto lo hicimos para introducir esta nueva clase; por supuesto hubiera sido más fácil poner, como pueden comprobar, con el mismo resultado:
String tit = "Seleccione ciudad de "+salidaOllegada+": ";
add("North", new Label(tit));
Por otra parte, creamos el objeto listaPueblos como new List(4, false), que indica que la lista va a tener 4 renglones y sólo se puede seleccionar un ítem por vez. Agregamos luego 6 ítems mediante addItem y la agregamos al panel.
Ahora ya podemos agregar las listas a nuestra ventana y poner un par de variables para guardarlas:
class Ventana8 extends Frame { hija de Frame
SelecPueblo cs; ciudad de salida
SelecPueblo cl; ciudad de llegada
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
cs = new SelecPueblo("SALIDA"); CIUDAD DE SALIDA
add ("Center", cs);
cl = new SelecPueblo("LLEGADA"); CIUDAD DE LLEGADA
add ("East", cl);
ok = new Button("Viaje: de ? a ? el ?/?/?");
add("South",ok);
pack(); dimensionamos la ventana
show(); y la mostramos!
}
...........................
Ya pueden ir probando cómo queda, aunque por ahora mucha funcionalidad no tenemos...