http://www.librosgratis.org
Completando la ventana Vamos a empezar por completar nuestro método ActualizaBoton, que modificará el texto del botón ok a medida que seleccionemos las ciudades y la fecha: void ActualizaBoton() { StringBuffer b = new StringBuffer("Viaje: de "); if (cs.getDescription() != null) b.append(cs.getDescription()); else b.append("?"); b.append(" a "); if (cl.getDescription() != null) b.append(cl.getDescription()); else b.append("?"); b.append(" el "); if (dp.getDescription() != null) b.append(dp.getDescription()); else b.append("?/?/?"); ok.setLabel(b.toString()); } Nuestro método comienza por crear un StringBuffer con las palabras "Viaje: de ", y va agregando el resto: • la ciudad de partida, llamando al método getDescription de cs (ciudad de salida) • el texto constante " a " • la ciudad de llegada, llamando al método getDescription de cl (ciudad de llegada) • el texto constante " el " • la fecha seleccionada, llamando al método getDescription de dp (día de partida) Si en cualquier caso recibe un string nulo, pone un signo de pregunta (o ?/?/? para la fecha). El método setLabel, sobre el objeto ok de tipo Label, modifica la "etiqueta" del botón. Realmente nos devuelven null los métodos que llamamos si no hay selección hecha? Veamos: class SelecPueblo extends Panel { private List listaPueblos; ............................ public String getDescription() { return listaPueblos.getSelectedItem(); } } El método getSelectedItem de la clase List devuelve null si no hay ítems seleccionados, así que acá andamos bien. En cuanto a la clase DiaPartida, de entrada inicializa el valor del texto en la fecha actual, así que aquí no se daría nunca este caso... Aunque al crear el objeto Ventana8 estamos poniendo un texto fijo en el botón, y no el que devuelve el objeto dp. Sería mejor, para ser más consistente, modificar el constructor de Ventana8 para que arme el texto mediante el método ActualizaBotón: Ventana8 (String titulo, boolean enApplet) { ........................................ ok = new Button("cualquiera"); ActualizaBoton(); add("South",ok); pack(); show(); }
Página 41