Saltar la navegación

Cajas de elección

La caja de elección es un control que permite elegir un valor de una lista desplegable. El usuario interacciona con ellas eligiendo una opción de la lista y nuestra aplicación podrá actuar en consecuencia.

Las cajas de elección pertenecen a la clase javafx.scene.control.ChoiceBox.

Una caja de elección lleva un modelo asociado que consiste en una lista que será de una clase que implemente la interfaz javafx.collections.ObservableList, y que representa las diferentes elecciones que nos muestra la caja de elección. El paquete javafx.collections contiene una copia de todas las clases pertenecientes al paquete java.util, con las mismas funcionalidades pero optimizadas para evitar el número de notificaciones al hacer una modificación y cuyos cambios pueden ser observados (patrón observable). Además este paquete contiene una clase de utilidad con métodos estáticos para devolvernos las diferentes implementaciones, llamada FXCollections. Para asignar el modelo a la caja de elección utilizaremos el método setItems de la misma.

La imagen muestra una caja de elección con tres posibles elecciones.

El código utilizado para crear esta interfaz es el siguiente:

package javafx.controles;

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;

public class CajasEleccion extends Application {

	@Override
	public void start(Stage escenarioPrincipal) {
		try {
			VBox raiz = new VBox();
			raiz.setPadding(new Insets(40));
			raiz.setSpacing(10);
			
			Label lbElige = new Label("Elige los extras:");
			lbElige.setFont(Font.font(20));
			
			ChoiceBox<String> cbExtras = new ChoiceBox<>();
			cbExtras.setItems(FXCollections.observableArrayList("Navegador", "Manos libres", "Lunas tintadas"));
			
			raiz.getChildren().addAll(lbElige, cbExtras);
			
			Scene escena = new Scene(raiz, 350, 200);
			escenarioPrincipal.setTitle("Cajas de elección");
			escenarioPrincipal.setScene(escena);
			escenarioPrincipal.show();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		launch(args);
	}

}