从SQL查询中动态创建JTree中的节点

时间:2013-02-26 23:45:02

标签: java swing jtree treenode

我有这样的层次结构:

Lot
 |_Stages
    |_Samples

示例:

Lot1
 |_Stage1
     |_Sample11 
     |_Sample12 
 |_Stage2
     |_Sample21 
     |_Sample22 

这个想法是用户将提供一个LotID,基于此我的SQL查询检索所有阶段以及每个阶段中的所有样本。

我将结果集中的每条记录保存为自定义对象,并将其添加到数组列表中。

结果集输出示例:

  

LotID || LotCondition || StageID || StageCondition || SampleID || SampleCondition

     

-------- || -------------- || ------------ || -------------------- || ------------ || ----------------

     

5001 ||处置|| 4001 ||完成|| 3001 ||批准

     

5001 ||处置|| 4001 ||完成|| 3002 ||批准

     

5001 ||处置|| 4002 ||完成|| 3003 ||批准

     

5001 ||处置|| 4002 ||完成|| 3004 ||批准

     

5002 || ReadyToRelease || 4003 ||完成|| 3005 ||批准

     

5003 ||处置|| 4004 ||完成|| 3006 ||批准

     

5004 ||处置|| 4004 ||完成|| 3007 ||批准

从这个数组列表中,我使用DefaultMutableTreeNode将对象添加到Tree(即new DefaultMutableTreeNode(custom_object.getLotID)..等)。

现在有两个问题:

  1. 只有一个唯一的LotID = 5001,但它显示4次(来自上面的示例),因为有4个样本,因此有4个记录。

  2. 我的目标是首先检索SampleID并将其添加到各自的StageID,最后将所有StageID添加到LotID(根节点)。我不知道如何以层次方式展示。

  3. 有人可以指出我正确的方向或一些想法吗?

1 个答案:

答案 0 :(得分:0)

好的..我找到了一种方法来做到这一点,并认为我可能会分享它。我没有使用MutableTreeModel。

我决定创建循环,即在重试结果集时。例如:我获取Stages的结果集,并在其中尝试获取每个阶段中的所有Samples。

现在我有两个选项,一个是将这些结果集存储到DefaultMutableTreeNode中或者将它们存储在ArrayList和HaspMap中(例如:我可以为Stage ID创建一个HashMap作为我的键及其在ArrayList中的样本因为我们可以将除DefaultMutableTreeNode对象之外的任何类型的对象传递给TreeModel,我们可以传入这个HashMap对象并使用自定义TreeModel来处理它。这也需要我保存在Arraylists中的对象覆盖HashCode和Equals方法。

但我认为,对于我的应用程序,使用选项1很简单。