0

我有一个

Class Category 
private Category parent;
private String name;
private ArrayList<Category> categories;
private DefaultMutableTreeNode node;

ArrayList<Category> categories

ArrayList 包含

[0]Categorie #1
   parent = null
   name = asdasd
   ArrayList<Category> categories
      [0]Categorie #2
          parent = #1
          name = asdasddsa
          ArrayList<Category> categories
              [0]Categories #4
                  parent = #2 
                  name = asdasdasd
                  ArrayList<Category> categories = null
      [1]Categorie #3
          parent = #1
          name = asdasdasdasdasd
          ArrayList<Category> categories = null

我想从那个 ArrayList 中创建一个 JTree。我尝试了一个使用自身的函数,直到类别 ArrayList 为空,但是使用这种方法,父类别中的类别不能超过 1 个。

我创建了这些功能,但它们不起作用。

public void generateNodes(Category category,DefaultMutableTreeNode root){
    ArrayList<Use> usages = category.getUsages();
    for(Use use: usages){
        category.getNode().add(use.getNode());
    }
    if(!category.getCategories().isEmpty()){
        root.add(category.getNode());

        for(Category cat: category.getCategories()){
            generateNodes(cat, category.getNode());
        }

    }else{
        root.add(category.getNode());
    }

}
4

1 回答 1

1

您只需要创建一个递归方法。您遇到的每个类别,创建一个 DefaultMutableTreeNode,然后将属性添加为子节点。然后使用包含的类别递归调用方法。

如果您想将多个类别作为根父级,您应该制作一个“假”根节点,然后在 JTree 上调用它:

设置根可见(假);

它仍然是一棵树,但看起来很多。这是你的意思吗?

您的代码应如下所示:

public void generateNodes(Category categories,DefaultMutableTreeNode root){
        ArrayList<Use> usages = categ.getUsages();
        for(Use use: usages){
            categ.getNode().add(use.getNode());
        }
        if(!categ.getCategories().isEmpty()){
            root.add(categ.getNode());

            for(Category cat: categ.getCategories(){
                generateNodes(categ, root);
            }

        }else{
            root.add(categ.getNode());
        }

}
于 2013-06-27T15:14:20.397 回答