JavaFX
¿Qué opción hemos escojido de una caja de elección?
El siguiente ejemplo muestra una aplicación muy parecida a la anterior pero que, en vez de utilizar radio botones para seleccionar la imagen a mostrar, utiliza una caja de elección.
En esta aplicación registramos un ChangeListener
para el modelo asociado a la caja de elección (aunque también lo podría haber hecho registrando un manejador para el ActionEvent
de la caja de elección).
La interfaz de la aplicación es la que se muestra a continuación.
El código asociado a la misma es el siguiente.
package javafx.eventos;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.recursos.LocalizadorRecursos;
import javafx.scene.Scene;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
public class SeleccionCajaEleccion extends Application {
private ChoiceBox<String> cbOpciones;
private ImageView ivIcono;
private static final Image CERVEZA = new Image(LocalizadorRecursos.class.getResourceAsStream("imagenes/iconoCerveza.png"), 100, 100, true, true);
private static final Image CACA = new Image(LocalizadorRecursos.class.getResourceAsStream("imagenes/iconoCaca.png"), 100, 100, true, true);
private static final Image APAGAR = new Image(LocalizadorRecursos.class.getResourceAsStream("imagenes/iconoApagar.png"), 100, 100, true, true);
private void mostrarIcono() {
String seleccion = cbOpciones.valueProperty().getValue();
if (seleccion.equals("Cerveza")) {
ivIcono.setImage(CERVEZA);
} else if (seleccion.equals("Caca")) {
ivIcono.setImage(CACA);
} else if (seleccion.equals("Apagar")) {
ivIcono.setImage(APAGAR);
}
}
@Override
public void start(Stage escenarioPrincipal) {
try {
VBox raiz = new VBox(20);
raiz.setPadding(new Insets(20));
raiz.setAlignment(Pos.CENTER);
HBox hbOpciones =new HBox(10);
raiz.setAlignment(Pos.TOP_CENTER);
hbOpciones.setPadding(new Insets(10));
Label lbElige = new Label("Elige el icono a mostrar:");
lbElige.setFont(Font.font(20));
cbOpciones = new ChoiceBox<>(FXCollections.observableArrayList("Cerveza", "Caca", "Apagar"));
cbOpciones.getSelectionModel().select("Caca");
cbOpciones.valueProperty().addListener((observable, oldValue, newValue) -> mostrarIcono());
hbOpciones.getChildren().addAll(lbElige, cbOpciones);
ivIcono = new ImageView();
ivIcono.setImage(CACA);
raiz.getChildren().addAll(hbOpciones, ivIcono);
Scene escena = new Scene(raiz, 430, 220);
escenarioPrincipal.setTitle("Elige un icono");
escenarioPrincipal.setScene(escena);
escenarioPrincipal.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}