【发布时间】:2023-03-06 21:34:01
【问题描述】:
我已经使用延迟加载实现了一棵树。第一级节点在树创建时创建,子节点仅在用户展开任何特定节点时创建。
数据来自数据库,我们向数据库发起查询以填充子节点。实现 TreeExpansionListener 并使用 treeExpanded 方法的重写实现。在扩展时,我删除所选节点的所有子节点,进行数据库查询并将记录作为子节点添加到所选节点。在将任何节点添加到树之前,会向该节点添加一个虚拟子节点。使用 DefaultMutableTreeNode。
到目前为止一切都很好,按预期运行良好。
问题 1 - 就像您一样,每次扩展都会调用数据库,所以如果一个节点被折叠并再次扩展,我将进行一次数据库旅行并再次处理......这个想法是不要重新加载节点如果已经扩展...
问题 2 - 如果我必须强制刷新,即重新加载树并保持扩展状态。现在处于工作状态...我怎样才能实现与上述问题 1 相同的修复?
感谢您对此的任何帮助。
【问题讨论】:
-
如果节点折叠,不要清除数据。再次展开时,检查节点是否已经有数据...
-
我重写了 treeCollapsed 方法并且在其中什么也不做。如何阻止数据擦除。
-
在 treeExpanded 上,检查父节点是否包含子节点。如果是这样。不重新加载任何东西
标签: java swing jtree expand collapse