如何在javafx树视图中返回已删除的treeitem?

时间:2019-04-23 17:37:18

标签: javafx treeview

如何在Javafx树视图中返回已删除的树项?

当我做这样的树时。

root-
    |-item1
    |-item2
    |-folder1-
             |-item3
             |-item4
             |-item5
             |-folder2-....
             |-folder3-....

如果我删除folder1,我想获取一些已删除项目和设备列表,这意味着如果我删除folder1,我想获取item3,item4,item5,folder2,folder3以及位于folder2和文件夹3。

我使用remove()函数删除了这样的treeitem。

folder1.getParent().getChildren.remove(folder1);

在这种情况下,获取已删除节点列表的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

在您的根EventHandler中添加一个TreeItem来处理TreeModificationEvent。具体来说,您应该监听事件类型为TreeItem#childrenModificationEvent()的事件。

  

TreeItem收到对其子级列表的直接修改时使用的EventType。

TreeItem<T> root = ...;
root.addEventHandler(TreeItem.<T>childrenModificationEvent(), event -> {
    if (event.wasRemoved()) {
        List<? extends TreeItem<T>> removed = event.getRemovedChildren();
        // Handle removed children. Traverse descendants as needed.
    }
});

其中T是您的值类型。