构造一个无限深度的JTree

时间:2011-05-10 17:31:05

标签: java swing data-structures jtree

如果我不知道jTree的深度是什么,我可以采用什么逻辑来构建JTree。我的数据库中有一个类别表,包含父类别和子级内的子项,依此类推。我想用这些数据构建JTree。你能告诉我一些如何做到这一点的想法吗?以下是我的数据库结构 enter image description here

2 个答案:

答案 0 :(得分:2)

实现您自己的TreeNode,在打开节点时(即第一次调用children()getChildCount()时,会临时填充其子节点列表(通过数据库查询)而不是提前构建DefaultMutableTreeNode树。

另请参阅有关此主题的Java tuorial如何加载儿童懒惰部分显示了使用TreeWillExpandListener和详细主题here

的不同方法

答案 1 :(得分:2)

调用JTree.addTreeExpansionListener允许您添加一个TreeExpansionListener,当调用其中一个方法时,它会提供一个名为TreeExpansionEvent的事件。在该事件上调用getPath将告诉您自己的位置。

顺便说一句,如果你正在构建一棵树,你需要开始使用+句柄。这意味着当您将节点放入树中时,您必须在其下面放置一个虚节点子节点。当您获得树扩展事件时,查看该子节点是否是这些虚拟节点之一,如果是,则将其删除并将其替换为真实子节点(基于db查询)。

什么是人造节点?只是一个实现TreeNode的类,它在某种程度上与普通的TreeNode不同,你可以很容易地确定它是什么。