0

データベースの結果セットに基づいて 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;
4

1 に答える 1

0

ツリーのルート ノードから検索を開始して、カテゴリの存在を確認できます。ツリーが例のように浅い場合は、ルート ノードの children() を反復処理するだけでおそらく十分ですが、DefaultMutableTreeNode には幅優先および深さ優先の列挙もあります。

それが遅すぎる場合 (ツリーが非常に大きいか、深くネストされている場合)、ツリー ノードへのカテゴリの別のマップを維持し、その方法で検索することもできます。いずれにせよ、カテゴリの既存のノードが見つからない場合は、新しいノードを作成して追加します。それ以外の場合は、見つかったものを再利用します。

于 2010-07-12T22:07:20.470 に答える