Saltar la navegación

Vista de lista

La vista de lista es un control que permite seleccionar uno o varios elementos de una lista dada de elementos. Este es un control que además añade una barra de desplazamiento si el contenido de la lista es mayor que la vista que lo contiene. Además es un control muy versátil ya que nos permite controlar cómo se visualiza cada uno de los elementos de la lista.

Una vista de lista pertenece a la clase javafx.scene.control.ListView.

Podemos indicar si permite selección múltiple o no mediante el método setSelectionMode, pasándole los valores SelectionMode.SINGLE o SelectionMode.MULTIPLE. Para hacerlo debemos acceder primero al modelo de selección de la lista mediante el método getSelectionModel.

Necesita tener asociado un modelo de una clase que implemente la interfaz javafx.collections.ObservableList que indicará las diferentes opciones a mostrar y que podremos asociar a la vista de lista mediante su método setItems. También podremos pasarle la lista en el constructor.

La siguiente imagen muestra una lista que permite la selección múltiple y que muestra una barra de desplazamiento ya que no se pueden visualizar todos sus elementos.

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.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.SelectionMode;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class VistaLista extends Application {

	@Override
	public void start(Stage escenarioPrincipal) {
		try {
			VBox raiz = new VBox();
			raiz.setPadding(new Insets(40));
			raiz.setSpacing(10);
			
			Label lbSelecciona = new Label("Seleccina los complementos:");
			ListView<String> lvComplementos = new ListView<>(FXCollections.observableArrayList(
					"Pendientes", "Collar", "Sombrero", "Felpa", "Bolso de mano"));
			lvComplementos.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
			
			raiz.getChildren().addAll(lbSelecciona, lvComplementos);
			
			Scene escena = new Scene(raiz, 300, 200);
			escenarioPrincipal.setTitle("Vista de lista");
			escenarioPrincipal.setScene(escena);
			escenarioPrincipal.show();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}

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

}