JComboBox 显示存储在列表 JAVA 中的同一对象的重复副本
JComboBox displays duplicate copies of the same object stored in an List JAVA
我有一个 List
存储类别类型的自定义 objects
。这个List
在Control
class。填充 List
没有问题,它按预期工作。当我调用 View
class.
中的 populateComboBox()
方法时出现问题
问题:第一次调用populateComboBox()
方法时,JComboBox
显示List
中的所有对象。第二次调用 populateComboBox()
方法时,JComboBox
显示对象的重复副本。
示例 如果我用类别类型的两个 objects
填充上述 List
(让它们命名为 C1
和 C2
) 并调用 populateComboBox()
方法,JComboBox
显示 C1
C2
。第二次调用时显示 C1
C2
C1
C2
。第三次,C1
C2
C1
C2``C1
C2
等等...
这是 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();
开始添加新项目之前。
我有一个 List
存储类别类型的自定义 objects
。这个List
在Control
class。填充 List
没有问题,它按预期工作。当我调用 View
class.
populateComboBox()
方法时出现问题
问题:第一次调用populateComboBox()
方法时,JComboBox
显示List
中的所有对象。第二次调用 populateComboBox()
方法时,JComboBox
显示对象的重复副本。
示例 如果我用类别类型的两个 objects
填充上述 List
(让它们命名为 C1
和 C2
) 并调用 populateComboBox()
方法,JComboBox
显示 C1
C2
。第二次调用时显示 C1
C2
C1
C2
。第三次,C1
C2
C1
C2``C1
C2
等等...
这是 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();
开始添加新项目之前。