我有2个TreeView' s,第一个填充了项目。
try {
CheckBoxTreeItem<String> treeRoot = new CheckBoxTreeItem<String>("Root");
treeRoot.setExpanded(true);
for (int i = 1; i <= 20; i++) {
item = new CheckBoxTreeItem<String>("item " + i);
treeRoot.getChildren().add(item);
}
treeView.setRoot(treeRoot);
treeView.setCellFactory(CheckBoxTreeCell.<String> forTreeView());
treePane.add(treeView, 0, 1);
} catch (Exception e) {
e.printStackTrace();
}
我想将选中复选框的项目转移到第二棵树。如果选中了根项,则必须将所有子项添加到第二个树。子根也是如此。
我试过这样的事情,但它不起作用。
int length = treeView.getExpandedItemCount();
CheckBoxTreeItem<String> treeRoot = new CheckBoxTreeItem<String>("On the other side");
treeRoot.setExpanded(true);
try {
for (int i = 1; i <= length; i++) {
item = (CheckBoxTreeItem<String>) (treeView.getTreeItem(i));
if (item.isSelected()) {
treeRoot.getChildren().add(item);
}
}
treeView.setRoot(treeRoot);
treePaneExecution.add(treeView, 0, 1);
} catch (Exception e) {
e.printStackTrace();
}
任何建议都将不胜感激!
答案 0 :(得分:1)
使用selectedProperty()
的{{1}}注册一个侦听器,并在所选状态更改时移动它们。这是一个简单的例子。你需要弄清楚当用户检查树根时要做什么 - 你想要的行为对我来说并不是很清楚(如果第一棵树是空的吗?) - 但这应该足以让你开始。 / p>
CheckBoxTreeItem