从数据库填充 JTree

Posted

技术标签:

【中文标题】从数据库填充 JTree【英文标题】:Populating JTree from database 【发布时间】:2011-07-01 14:52:55 【问题描述】:

我有一个包含字段 category_id、category_name 和 parent_category_id 的表。并且 parent_category_id 具有来自 category_id 的值,代表父子关系。我没有任何固定的层次结构,它可以达到 5 级或 10 级,并且没有限制。我需要一个代码来说明如何实现这个 JTree 以使事情为我工作。我应该也可以为菜单栏实现相同的功能..请帮助我..

我在谷歌上搜索后发现了这个,

Map<String, Node> idToNode = new HashMap<String, Node>();   

//create nodes from ResultSet   
while ( resultSet.next() )       
    Node node = //create node -contains info, parent id, and its own id from ResultSet
    //put node into idToNode, keyed with its id   
   

//link together   
Iterator<String> it = idToNode.keySet().iterator();   
Node root = null;   
while ( it.hasNext() )          
    Node node = idToNode.get(it.next());       
    Node parent = idToNode.get(node.getParentId());   
    if ( parent == null )   
        root = node;  
    else  
       parent.addChild(node);  
      

我如何对这些注释说明进行编码?

【问题讨论】:

【参考方案1】:

使用DefaultMutableTreeNode 创建你的节点

制作一个 ID 到节点的映射 - 当您从数据库中获取节点时,将它们存储在映射中,并将 id 作为它们的键。

获得所有节点后,再次遍历它们并匹配它们的父 ID,从地图中检索它们。

假设您的树在数据库中的结构是健全的,那么它在这里是健全的。选择任意一个节点并跟随父链的根。

使用根对象,您可以创建 JTree。 :)

【讨论】:

顺便说一句,我不一定有代码。但我觉得这里有你需要的工具来完成它:) 可以根据需要查找每件事。 我实际上没有时间编写这个东西。再过 2 个小时,我应该能够完成这部分,所以你能找到类似的东西吗?即使我在谷歌上寻求帮助,但没有任何帮助..谢谢! 这些活动中的每一个都有明确的记录。我自己从未使用过它们,但算法是合理的。我无法想象这样的场景(假设你甚至是一个称职的开发人员,因为你的帖子很清楚,我认为这是一个安全的假设)你需要一个多小时才能做到这一点。假设编译时间为 2-3 分钟,这似乎真的需要 10 分钟的代码和 20 分钟的调试时间。 “我实际上没有时间编写这个东西。” ——太珍贵了!

以上是关于从数据库填充 JTree的主要内容,如果未能解决你的问题,请参考以下文章

为Jtree中的每个节点设置图标

JTree 将节点的背景设置为不透明

从 JTree 添加和删除节点

JTree中的颜色行

如何:在第一列中具有可折叠 JTree 并在其他列中具有数据的 JTable?

java的JTree的使用方法,