JTree检查重复的类别

时间:2010-07-12 20:23:20

标签: java swing jtree

我正在尝试根据数据库结果集生成JTree。我得到了

Category | Name
-------- | ----
   A     |  1
   B     |  2
   A     |  3

来自数据库。如果需要,如何将类别添加到JTree?我希望这棵树看起来像:

[Root]
    [Category A]
         Child 1
         Child 3
    [Category B]
         Child 2             

这是我到目前为止所做的:

    //Get the blueprints
    SqlHelper shelp = new SqlHelper();
    ArrayList<BaseInformation> bpList = shelp.getBlueprints();

    //Add each to model
    for(int x = 0; x < bpList.size(); x++){
        BaseInformation info = bpList.get(x);
        category = new DefaultMutableTreeNode(info.blueprintCategory);
        top.add(category);
        category.add(new DefaultMutableTreeNode(info.blueprintName));
    }

    JTree tree = new JTree(top);

    TreeModel model = tree.getModel();

    return model;

1 个答案:

答案 0 :(得分:0)

好吧,您可以从树的根节点开始搜索,以检查是否存在类别。如果您的树与您的示例一样浅,只需遍历根节点的children()就足够了,但DefaultMutableTreeNode也具有广度和深度优先枚举。

如果速度太慢(如果树很大或嵌套很深),您还可以为其树节点维护一个单独的类别映射,并以这种方式查找它们。无论哪种方式,如果找不到类别的现有节点,则创建并添加新节点,否则重新使用找到的节点。