如何在javafx treeview中返回已删除的treeitems?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在javafx treeview中返回已删除的treeitems?相关的知识,希望对你有一定的参考价值。

我怎样才能在Javafx树视图中返回删除的treeitems?

当我做这样的树。

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

如果我删除folder1我想获得一些已删除的项目和fodler列表,这意味着如果我删除folder1我想获取item3,item4,item5,folder2,folder3以及位于folder2和folder3中的更多项目的列表。

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

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

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

答案

添加一个EventHandler到你的根TreeItem来处理TreeModificationEvents。具体来说,您应该使用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是您的价值类型。

以上是关于如何在javafx treeview中返回已删除的treeitems?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Javafx 中让 Treeview DisclosureNode 正确?

javafx:如何隐藏TreeView中的“下拉箭头”?

如何使某些JavaFX TreeView节点不可选择?

Javafx:TreeView 的域对象

javaFX树结构treeview使用

如何在 TreeView 中禁用或修改 TreeCell 的填充