Vista de árbol
La vista en árbol es otro control muy potente ya que permite mostrar una jerarquía de elementos, los cuales podemos seleccionar e incluso editar.
Una vista de árbol pertenece a la clase javafx.scene.control.TreeView
. Cada elemento del árbol pertenece a la clase javafx.scene.control.TreeItem
.
Necesita tener asociado un modelo que consistirá en la raíz del árbol del tipo TreeItem
y que ésta a su vez estará formada por diferentes elementos del tipo TreeItem
de forma recursiva. Los nodos podemos mostrarlos expandidos o contraidos mediante el método setExpanded
.
En la imagen siguiente se muestra una vista de árbol de personajes (con sus nombres y apellidos) clasificados jerárquicamente en masculinos y femeninos.
El código utilizado para crear esta interfaz es el siguiente:
package javafx.controles;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class VistaArbol extends Application {
@Override
public void start(Stage escenarioPrincipal) {
try {
VBox raiz = new VBox();
raiz.setPadding(new Insets(40));
raiz.setSpacing(10);
Label lbPersonajes = new Label("Personajes:");
TreeItem<String> tiRaiz = new TreeItem<> ("Personajes");
tiRaiz.setExpanded(true);
TreeItem<String> tiMasculinos = new TreeItem<> ("Masculinos");
tiRaiz.getChildren().add(tiMasculinos);
TreeItem<String> ti1 = new TreeItem<> ("Pepito Grillo");
tiMasculinos.getChildren().add(ti1);
TreeItem<String> ti2 = new TreeItem<> ("Bob Esponja");
tiMasculinos.getChildren().add(ti2);
TreeItem<String> ti3 = new TreeItem<> ("Juan Sin Miedo");
tiMasculinos.getChildren().add(ti3);
TreeItem<String> ti4 = new TreeItem<> ("Perico De Los Palotes");
tiMasculinos.getChildren().add(ti4);
TreeItem<String> tiFemeninos = new TreeItem<> ("Femeninos");
tiRaiz.getChildren().add(tiFemeninos);
TreeItem<String> ti5 = new TreeItem<> ("Juana La Loca");
tiFemeninos.getChildren().add(ti5);
TreeView<String> tvPersonajes = new TreeView<> (tiRaiz);
tvPersonajes.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
raiz.getChildren().addAll(lbPersonajes, tvPersonajes);
Scene escena = new Scene(raiz, 300, 280);
escenarioPrincipal.setTitle("Vista de árbol");
escenarioPrincipal.setScene(escena);
escenarioPrincipal.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}