我正在尝试根据数据库结果集生成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;
答案 0 :(得分:0)
好吧,您可以从树的根节点开始搜索,以检查是否存在类别。如果您的树与您的示例一样浅,只需遍历根节点的children()就足够了,但DefaultMutableTreeNode也具有广度和深度优先枚举。
如果速度太慢(如果树很大或嵌套很深),您还可以为其树节点维护一个单独的类别映射,并以这种方式查找它们。无论哪种方式,如果找不到类别的现有节点,则创建并添加新节点,否则重新使用找到的节点。