【发布时间】:2012-05-15 22:43:55
【问题描述】:
我有一个文件浏览器类型的应用程序,它由一个显示层次结构的 CellTree 和一个显示当前节点内容的浏览器窗格组成。
应用程序必须处理可能对 CellTree 来说太大而无法有效处理的层次结构,因此浏览器窗格中显示的位置与树中打开的节点没有强耦合。
我希望实现一个按钮,该按钮将打开 CellTree 中的当前浏览位置。我的服务器端数据模型在所有对象上都有父/子引用,因此获取层次结构很简单,但我正在努力将其应用于树。
这是我目前的尝试,它是包含我的树的小部件上的一个方法,并从接收者调用。每个 RecordTreeLevel 对象代表树中的一个级别。
public void navigateTo(List<RecordTreeLevelProxy> hierarchy) {
TreeNode currentNode = tree.getRootTreeNode();
ListIterator iter = hierarchy.listIterator(hierarchy.size());
while (iter.hasPrevious()){
RecordTreeLevelProxy level = (RecordTreeLevelProxy) iter.previous();
Integer nodeIndex = locateNode(level.getUniqueRef(), currentNode);
if (nodeIndex != null){
currentNode = currentNode.setChildOpen(nodeIndex, true, true);
}
}
}
这不起作用,因为循环在子节点被添加到任何节点之前完成了整个循环。因此,第一级节点按应有的方式打开,但在第二次循环出现时没有任何子节点。
我不禁觉得我遗漏了一些明显的东西,或者以错误的方式执行此操作,但我看不到它。非常感谢任何帮助(即使是说“别傻了,你不能那样做)
【问题讨论】: