java - jComboBox 与隐藏数据 java

标签 java swing jcombobox

我搜索了如何在java中将额外的数据放入jComboBox中,我发现的最多结果是创建一个包含属性键和值的项目类。

我已经这样做了,但当我尝试使用“new Item(key, value)”在 jComboBox 中添加项目时,我仍然遇到此错误,

错误代码是:

Item cannot be converted to String jComboTemp1.addItem(new Item("CA", "Canada"));

这是类 Item:

public class Item {

    private int id;
    private String description;

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

    public int getId() {
        return id;
    }

    public String getDescription() {
        return description;
    }

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

问题在这里显示,尽管我已经重写了 toString 方法:

jComboTemp1.addItem(new Item<String>("CA", "Canada"));

最佳答案

您有几个问题:

public class Item {

该类不使用泛型。

public Item(int id, String description) {

构造函数需要一个“int”和一个“String”。

jComboTemp1.addItem(new Item<String>("CA", "Canada"));

当您创建 Item 对象时,您有两个错误:

  1. 您正在尝试使用泛型
  2. 您传递了错误的参数。

所以你有两个解决方案。您需要:

  1. 正确使用泛型,或者
  2. 不要使用泛型。

如果您不使用泛型,那么您需要将正确的参数传递给 Item 对象:

jComboTemp1.addItem(new Item(1, "Canada"));

如果您确实想使用泛型,那么您需要修改 Item 类以使用泛型。

查看 Combo Box With Hidden Data 中找到的 Item 类对于通用 Item 对象。该对象是一个更完整的实现,因为它还实现了 equals(...) 和 hashcode() 方法。

如果您希望在您要使用的 Item 类中包含 Integer 数据,请使用上述链接中的 Item 类:

JComboBox<Item<Integer>> jcomboTemp1 = new JComboBox<Item<Integer>>();
...
jcomboTemp1.addItem(new Item<Integer>(1, "Canada"));  

使用通用对象稍微复杂一些,但是您可以通过编译时检查获得额外的安全性,以确保将正确的数据添加到类中。

泛型类更具可重用性。您可以轻松地将代码更改为:

JComboBox<Item<String>> jcomboTemp1 = new JComboBox<Item<String>>();
...
jcomboTemp1.addItem(new Item<String>("CA", "Canada"));  

现在该类支持字符串格式的隐藏值,并且不需要对 Item 类进行任何更改。

关于java - jComboBox 与隐藏数据 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42344510/

相关文章:

java - 在 JApplet 中显示骰子图像时出现问题

java - StyleConstants.setBold 中 boolean 参数的含义是什么?

java - 使用 ComboBox 更新 JTable 中的特定单元格

java - 在 Java 中获取 JCombobox 中项目的正确位置

java - Android 解析 xml 文件时出错

java - j2me中的canvas和form有什么区别?

java - 如何在 Windows 上使用另一个用户帐户创建新进程?

java - ZK MVVM 验证消息自动绑定(bind)?

java - 用相同的模型填充多个组合框但选择差异

java - 将 JPanel 转换为 png 或其他图像文件