Java Reference
In-Depth Information
As shown in the following snippet from Listing 6-9, a
TreeView
can be supplied with values for several properties,
including whether the root
TreeItem
should
show
and whether the
TreeView
is
editable
. In the StarterApp program
we're also setting the
minWidth
so that the user can't hide the
TreeView
by dragging the
SplitPane
divider (as you
noticed in Step 12 of the previous exercise).
TreeView treeView = new TreeView(root);
treeView.setMinWidth(150);
treeView.setShowRoot(false);
treeView.setEditable(false);
...
Defining a
TreeItem
Taking a look at the following snippet from Listing 6-9, you see that each
TreeItem
is given the
value
that it represents,
and 0 or more
children TreeItem
objects:
animalTree.getChildren().addAll(new TreeItem("Lion"), new TreeItem("Tiger"), new TreeItem("Bear"));
TreeItem root = new TreeItem("Root");
root.getChildren().addAll(animalTree, mineralTree, vegetableTree);
In addition, you can set properties such as
•
graphic
, which displays a
Node
in the
TreeItem
expanded
, which controls whether the
TreeItem
is expanded or collapsed
Now that you know how to create a
TreeView
and its
TreeItem
instances, let's examine how to detect when
a
TreeItem
has been selected.
•
Detecting When a
TreeItem
Is Selected
To detect when the user selects a
TreeItem
in the
TreeView
, the StarterApp program adds a
ChangeListener
to the
selectedItem
property of the tree view's selection model. The code for accomplishing this is shown in this snippet
from Listing 6-9:
treeView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
treeView.getSelectionModel().selectedItemProperty()
.addListener((ObservableValue observable, Object oldValue, Object newValue) -> {
TreeItem treeItem = (TreeItem) newValue;
if (newValue != null && treeItem.isLeaf()) {
model.listViewItems.clear();
for (int i = 1; i <= 10000; i++) {
model.listViewItems.add(treeItem.getValue() + " " + i);
}
}
});
A
TreeView
may allow the user to select a single row, or multiple rows, based on its selection mode. In the first
line of the preceding snippet, we're setting the selection mode of the
TableView
to
SINGLE
.
In Step 11 of the exercise, when you clicked on a
leaf TreeItem
in the
TreeView
, the
ListView
on the right side of
Figure
6-6
was populated. The code in this snippet accomplishes this by first checking to see if the selected
TreeItem
is a
leaf
, and then populating the model that backs the
ListView
.
Search WWH ::
Custom Search