Java Code:
This example code listing of a JavaFX application shows how to use the
The article that goes with this code listing is the TreeView Overview.
To find out about other JavaFX controls have a look at JavaFX User Interface Controls.
TreeView
control. There are two TreeView
controls showing two different family trees. Each TreeView
control has a ChangeListener
attached to listen for when a TreeItem is selected. When this happens a corresponding label is altered to show the value of the TreeItem selected.The article that goes with this code listing is the TreeView Overview.
To find out about other JavaFX controls have a look at JavaFX User Interface Controls.
import javafx.application.Application;import javafx.beans.value.ChangeListener;import javafx.beans.value.ObservableValue;import javafx.scene.Scene;import javafx.scene.layout.HBox;import javafx.scene.layout.VBox;import javafx.stage.Stage;import javafx.scene.control.TreeView;import javafx.scene.control.TreeItem;import javafx.scene.control.Label;public class TreeViewExample extends Application {@Overridepublic void start(Stage primaryStage) { final String duckLabelText = "Selected Tree Item From Duck Tree: \n"; final String royalLabelText = "Selected Tree Item From Royal Tree: \n"; //Use HBOX and VBOX layout panes to space out the controls//in a single rowHBox treeBox = new HBox();VBox labelBox = new VBox(30);HBox controlBox = new HBox(10);//Create labels to highlight the selected items from the TreeViewsfinal Label duckLabel = new Label(duckLabelText);final Label royalLabel = new Label(royalLabelText);//Create and empty TreeViewTreeView<String> duckTree = new TreeView<String>();//Create a TreeItem that will act as the root item of the TreeViewTreeItem<String> duckRoot = new TreeItem<String>("Della Duck - Donald Duck");//Add TreeItems to the rootduckRoot.getChildren().addAll(new TreeItem<String>("Huey Duck"),new TreeItem<String>("Dewey Duck"),new TreeItem<String>("Louie Duck"));//Use the setRoot method to set the root TreeItemduckTree.setRoot(duckRoot);//Set a ChangeListener to handle events that occur with a Treeitem//is selectedduckTree.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<TreeItem <String>>() {public void changed(ObservableValue<? extends TreeItem<String>> observableValue, TreeItem<String> oldItem, TreeItem<String> newItem) {duckLabel.setText(duckLabelText + newItem.getValue());}});//Create TreeItems for the Hierarchy of the TreeViewTreeItem<String> royalRoot = new TreeItem<String>("Queen Elizabeth - Prince Philip");TreeItem<String> Charlie= new TreeItem<String>("Prince Charles - Princess Diana");TreeItem<String> Annie = new TreeItem<String>("Princess Anne - Mark Phillips");TreeItem<String> Andy = new TreeItem<String>("Prince Andrew - Sarah Ferguson");TreeItem<String> Eddie = new TreeItem<String>("Prince Edward - Sophie");//Populate the TreeItem to be used as the root with the other TreeItemsroyalRoot.getChildren().addAll(Charlie, Annie, Andy, Eddie);//Create a TreeView using the root TreeItemTreeView<String> royalTree = new TreeView<String>(royalRoot); //Populate the other TreeItems with more TreeItems //to build the family treeCharlie.getChildren().addAll(new TreeItem<String>("Prince William"), new TreeItem<String>("Prince Henry"));Annie.getChildren().addAll(new TreeItem<String>("Peter Phillips"), new TreeItem<String>("Zara Phillips"));Andy.getChildren().addAll(new TreeItem<String>("Princess Beatrice"), new TreeItem<String>("Princess Eugenie"));Eddie.getChildren().addAll(new TreeItem<String>("Lady Louise"), new TreeItem<String>("Viscount Severn"));//Set a ChangeListener to handle events that occur with a Treeitem//is selectedroyalTree.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<TreeItem <String>>() {public void changed(ObservableValue<? extends TreeItem<String>> observableValue, TreeItem<String> oldItem, TreeItem<String> newItem) {royalLabel.setText(royalLabelText + newItem.getValue());}});//Add the TreeViews to the HBoxtreeBox.getChildren().add(duckTree);treeBox.getChildren().add(royalTree);//Add the labels to the VBoxlabelBox.getChildren().add(duckLabel);labelBox.getChildren().add(royalLabel);//Add the HBox and VBox to another HBox to //position the layout panescontrolBox.getChildren().add(treeBox);controlBox.getChildren().add(labelBox);//Add the main HBOX layout pane to the sceneScene scene = new Scene(controlBox, 800, 250);//Show the formprimaryStage.setTitle("Hello World!");primaryStage.setScene(scene);primaryStage.show();}/** * @param args the command line arguments */public static void main(String[] args) {launch(args);}}
Source...