gpt4 book ai didi

java - jComboBox 与隐藏数据 java

转载 作者:行者123 更新时间:2023-12-01 08:51:48 27 4
gpt4 key购买 nike

我搜索了如何在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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com