我找不到解决方案,为什么我在 NetBeans Platform 7.1 应用程序中的资源管理器管理器(BeanTreeView 或 OutlineView)在删除单个节点时与树结构一起工作得很好,但在删除多个节点时却不行。问题在于刷新树,而不是删除本身。调用删除操作(系统操作)时,它会在我的节点上调用 destroy() 方法:
@Override
public void destroy() throws IOException {
//removing the business object
...
try {
IReloadableViewCapability rvc;
if (getParentNode() != null) {
rvc = this.getParentNode().getLookup().lookup(IReloadableViewCapability.class);
}
rvc.reloadChildren();
} catch (Exception ex) {
logger.log(Level.WARNING, null, ex);
}
fireNodeDestroyed();
}
比方说,我有这个结构:
- 节点 1
- 1.1
- 1.2
- 1.3
- 节点 2
- 2.1
- ...
现在假设我要删除节点 1.1、1.2 和 1.3。我将它们全部选中,调用删除操作并调用节点 1.1 的 destroy() 方法,在该方法中删除数据并在节点 1.1 的 parentNode 上调用我的 reloadChildren() 方法(如上面的代码所示)。然后删除节点1.2后,就到了1.3。它删除了 1.3 的删除数据,但现在 getParentNode() 返回 null,即使它再次应该返回 Node 1。
当同时删除节点 1 和节点 2(或任何其他顶级节点)时,也会出现类似的问题,即使它们是特殊 RootNode 节点的子节点。root 的唯一区别是它只对第一个节点正常,但比任何其他选择的节点都找不到它的父节点。
问题可能出在哪里?