gpt4 book ai didi

Java 对象数组到 JTree

转载 作者:行者123 更新时间:2023-12-01 14:23:30 26 4
gpt4 key购买 nike

我有一个

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());
}

}

最佳答案

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

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

setRootVisible(false);

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

您的代码应如下所示:

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());
}

}

关于Java 对象数组到 JTree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17346711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com