复选框状态下的TreeView传输

时间:2014-11-05 09:01:28

标签: java javafx treeview

我有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();
}

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:1)

使用selectedProperty()的{​​{1}}注册一个侦听器,并在所选状态更改时移动它们。这是一个简单的例子。你需要弄清楚当用户检查树根时要做什么 - 你想要的行为对我来说并不是很清楚(如果第一棵树是空的吗?) - 但这应该足以让你开始。 / p>

CheckBoxTreeItem