【问题标题】:Adding a class instance to JComboBox [duplicate]将类实例添加到 JComboBox [重复]
【发布时间】:2019-11-10 14:13:51
【问题描述】:

在这个问题 (Adding items to a JComboBox) 中,描述了如何将 Item 添加到 JComboBox。 这将允许在 JComboBox 中存储一个对象,并覆盖 toString() 方法,JComboBox 将显示一个值并返回整个对象。

我已经包含了以下课程:

public class ComboItem {

    private String key;
    private String value;

    public ComboItem(String key, String value)
    {
        this.key = key;
        this.value = value;
    }

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

    public String getKey()
    {
        return key;
    }

    public String getValue()
    {
        return value;
    }
}

然后我尝试将其添加到我的 JComboBox comboTimeZoneChart:

comboTimeZoneChart.addItem(new ComboItem("bar", "foo"));

但我在 Netbeans 中收到以下错误:

incompatible types: ComboItem cannot be converted to String

我有仔细检查,但我不知道可能出了什么问题。 这个问题/问题也反映在包含的原始问题的已接受答案中有 5 个赞成票,所以看来我不是唯一一个面临这个问题的人。

我包含错误的图像:

【问题讨论】:

  • 你确定这不是使用错误的泛型那么简单,即在你应该使用JComboBox<ComboItem>时使用JComboBox<String>
  • 事实上,这必须是问题所在——组合框、其模型或两者的通用类型不正确。
  • 恐怕你没有在你的问题中发布最重要的代码——你在哪里声明你的组合框及其模型
  • 感谢您指出重复并隔离问题。问题恰好位于标记为具有相同问题/答案的帖子中。不管它看起来多么简单,我都不知道你可以定义 JComboBox。此外,当我使用 Netbeans UI builder 时,我从未见过代码 JComboBox 的那部分。我已将 JComboBox 替换为 JComboBox 并且问题消失了。

标签: java swing jcombobox openjdk-8


【解决方案1】:

comboTimeZoneChart.addItem(new ComboItem("bar","foo").toString());

【讨论】:

  • 这是一个糟糕的建议,因为 OP 创建 ComboItem 条目类的全部原因是将组合框模型中保存的信息以可用的形式保存。您的建议会丢弃所有这些信息,而且没有任何好处。
猜你喜欢
  • 2012-12-30
  • 1970-01-01
  • 2021-07-26
  • 2015-01-23
  • 1970-01-01
  • 1970-01-01
  • 2013-11-12
  • 2018-03-01
  • 1970-01-01
相关资源
最近更新 更多