package treeview; import java.util.Arrays; import java.util.List; import com.sun.javafx.runtime.VersionInfo; import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.scene.Node; import javafx.scene.Scene; import javafx.scene.control.SelectionMode; import javafx.scene.control.ToggleButton; import javafx.scene.control.TreeItem; import javafx.scene.control.TreeView; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.paint.Color; import javafx.stage.Stage; import javafx.beans.property.SimpleStringProperty; import javafx.scene.layout.VBox; public class TreeViewSample extends Application { List employees = Arrays.asList( new Employee("Ethan Williams", "Sales Department"), new Employee("Emma Jones", "Sales Department"), new Employee("Michael Brown", "Sales Department"), new Employee("Anna Black", "Sales Department"), new Employee("Rodger York", "Sales Department"), new Employee("Susan Collins", "Sales Department"), new Employee("Mike Graham", "IT Support"), new Employee("Judy Mayer", "IT Support"), new Employee("Gregory Smith", "IT Support"), new Employee("Jacob Smith", "Accounts Department"), new Employee("Isabella Johnson", "Accounts Department")); TreeItem rootNode = new TreeItem("MyCompany Human Resources"); private TreeView treeView; public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) { rootNode.setExpanded(true); for (Employee employee : employees) { TreeItem empLeaf = new TreeItem(employee.getName()); boolean found = false; for (TreeItem depNode : rootNode.getChildren()) { if (depNode.getValue().contentEquals(employee.getDepartment())){ depNode.getChildren().add(empLeaf); found = true; break; } } if (!found) { TreeItem depNode = new TreeItem( employee.getDepartment() ); rootNode.getChildren().add(depNode); depNode.getChildren().add(empLeaf); } } stage.setTitle("Tree View Sample"); VBox box = new VBox(); final Scene scene = new Scene(box, 400, 300); scene.setFill(Color.LIGHTGRAY); treeView = new TreeView(rootNode); treeView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); box.getChildren().add(treeView); ToggleButton changeSelectionMode = new ToggleButton("Multiple"); changeSelectionMode.setSelected(true); changeSelectionMode.selectedProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observableValue, Boolean aBoolean, Boolean newVal) { if (newVal) { treeView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); } else { treeView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); } } }); box.getChildren().add(0, changeSelectionMode); stage.setTitle(VersionInfo.getRuntimeVersion()); stage.setScene(scene); stage.show(); } public static class Employee { private final SimpleStringProperty name; private final SimpleStringProperty department; private Employee(String name, String department) { this.name = new SimpleStringProperty(name); this.department = new SimpleStringProperty(department); } public String getName() { return name.get(); } public void setName(String fName) { name.set(fName); } public String getDepartment() { return department.get(); } public void setDepartment(String fName) { department.set(fName); } } }