java - 从 Jcombobox 中删除特定项目

标签 java swing jcombobox comboboxmodel

我正在使用 DefaultComboBoxModel 和自定义项填充组合框。每个项目都包含一个 ID 和一个名称。我正在遍历一个表,并且基于一个选择,我想从组合框中删除选定的元素。对于我要删除的项目,我从正在迭代的表中获得了 ID 和名称。我尝试使用接收对象的 removeItem。我将 ID 和名称传递到我的自定义 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);

自定义项目代码:

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

删除项目的代码(本例中的硬编码):

 companyName.removeItem(new Item(50002,"ALLIED WASTE SYSTEMS"));

removeItem 说它接受一个对象,所以我不确定为什么这行不通。任何帮助将不胜感激!

最佳答案

您的类 Item 不会覆盖 equals()hashCode() 以便“相等”的项目比较相等。您需要实现这两个方法来满足集合类所需的契约。

关于java - 从 Jcombobox 中删除特定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18066729/

相关文章:

java - 在 hadoop mapreduce 应用程序中访问来自其他文件系统的文件以及 hdfs 文件

java - Servlet 不更新数据库中的值

java - WindowAdapter 是 Java Swing 中的适配器模式实现吗?

java - Eclipse 无法识别 examplefilefinder

java - 自动完成 JCombobox

java - 如何检测 JComboBox 中的 TAB 按键?

java - 带有彩色项目和焦点的彩色 jcombobox

java - 为什么 JDBC 驱动程序将准备好的语句保持在连接级别?

java - 调用相同(自写)方法时得到不同的结果

java - 退出 Jframe 窗口时出错