JComboBox 显示存储在列表 JAVA 中的同一对象的重复副本

JComboBox displays duplicate copies of the same object stored in an List JAVA

我有一个 List 存储类别类型的自定义 objects。这个ListControlclass。填充 List 没有问题,它按预期工作。当我调用 View class.

中的 populateComboBox() 方法时出现问题

问题:第一次调用populateComboBox()方法时,JComboBox显示List中的所有对象。第二次调用 populateComboBox() 方法时,JComboBox 显示对象的重复副本。

示例 如果我用类别类型的两个 objects 填充上述 List(让它们命名为 C1C2) 并调用 populateComboBox() 方法,JComboBox 显示 C1 C2。第二次调用时显示 C1 C2 C1 C2。第三次,C1C2C1C2``C1C2等等...

这是 class 类别 class 的内容:

public class Category 
{
    private String catName; 

    public Category()
    {

    }

    public Category(String str)    {
        this.catName = str;
    }


    public String getCatName() 
    {
        return catName;
    }


    @Override
    public String toString()
    {
        return catName;
    }
}

这是我的控件的一部分 class:

public final class Control 
{
    private static List<Category> categoryList = new ArrayList<>();
    public static List<Category> getCatList()
    {
        return categoryList;
    }
}

下面是视图class中populateComboBox()方法的内容:

{
    List<Category> catList = Control.getCatList();
    for(Category cat: catList)
        {
            selectCatComboBox.addItem(cat);
        }
        addItemDialog.setVisible(true); 
}

您可以使用:

selectCatComboBox.removeAllItems();

开始添加新项目之前。