我如何 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
以处理 TreeModificationEvent
s. 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
是您的值类型。
如何在 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
以处理 TreeModificationEvent
s. 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
是您的值类型。