我如何 return 删除 javafx treeview 中的 treeitems?

How can i return deleted treeitems in javafx treeview?

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

当我做一棵这样的树时

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

如果我删除 folder1,我想得到一些已删除项目和 fodlers 的列表,这意味着如果我删除 folder1,我想获得 item3、item4、item5、folder2、folder3 和更多项目的列表,这些项目位于文件夹 2 和文件夹 3。

我使用 remove() 函数像这样删除树项。

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

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

EventHandler 添加到根 TreeItem 以处理 TreeModificationEvents. Specifically, you should listen for events with the TreeItem#childrenModificationEvent() 事件类型。

An EventType used when the TreeItem receives a direct modification to its children list.

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 是您的值类型。