从Jcombobox中删除特定项目

SBa*_*aha 1 java swing jcombobox comboboxmodel

我使用DefaultComboBoxModel和自定义Item填充组合框.每个项目都包含一个ID和一个名称.我正在遍历一个表,并根据选择,我想从组合框中删除选定的元素.对于我想删除的项目,我有我正在迭代的表中的ID和名称.我尝试使用removeItem接受一个对象.我将ID和Name传递给我的自定义Item构造函数,但这似乎不起作用.谁能告诉我这里缺少什么?

填充组合框的代码:

Vector<Object> companyList = new Vector<Object>();
        while(rs.next()){
            companyList.addElement(new Item(rs.getInt(1),rs.getString(2)));
        }
DefaultComboBoxModel cmod = new DefaultComboBoxModel(companyList);
        companyName.setModel(cmod);
Run Code Online (Sandbox Code Playgroud)

自定义项代码:

class Item
{
    private int id;
    private String name;

    public Item(int id, String name)
    {
        this.id = id;
        this.name = name;
    }

    public int getId()
    {
        return id;
    }

    public String getName()
    {
        return name;
    }

    public String toString()
    {
        return name;
    }
}
Run Code Online (Sandbox Code Playgroud)

删除Item的代码(本例中为硬编码):

 companyName.removeItem(new Item(50002,"ALLIED WASTE SYSTEMS"));
Run Code Online (Sandbox Code Playgroud)

removeItem说它接受一个Object所以我不确定为什么这不起作用.任何帮助,将不胜感激!

Jim*_*son 5

您的类Item不会覆盖equals(),hashCode()因此"相等"项比较相等.您需要实现这两个方法以满足集合类所需的合同.