繁体   English   中英

通过SQL查询在JTree中动态创建节点

[英]Dynamically create nodes in JTree from a SQL query

我有这样的层次结构:

Lot
 |_Stages
    |_Samples

例:

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

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

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

结果集输出示例:

LotID || LotCondition || StageID || StageCondition || SampleID || 样本条件

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

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

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

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

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

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

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

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

从这个数组列表中,我使用DefaultMutableTreeNode将对象添加到树(即新的DefaultMutableTreeNode(custom_object.getLotID).. etc)。

现在有两个问题:

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

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

谁能为我指出正确的方向或一些想法?

好吧..我找到了一种方法来做,并认为我可以分享。 我没有使用MutableTreeModel。

我决定创建循环,即检索结果集时。 例如:我获取阶段的结果集,并且在内部尝试获取每个阶段中的所有样本。

现在我有2个选项,一个是将这些结果集存储到DefaultMutableTreeNode中,或者将它们存储在ArrayList和HaspMap中(例如:我可以为舞台ID创建一个HashMap作为键,并在ArrayList中创建其Samples作为值。然后,因为我们可以将DefaultMutableTreeNode对象以外的任何类型的对象传递给TreeModel,所以我们可以传递此HashMap对象并使用自定义TreeModel来处理它。等于方法。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM