我已经搜索了如何在java中的jComboBox中添加额外的数据,我发现的最多结果是创建一个包含属性键和值的Item类。
我已经做到了,但是当我尝试使用`new Item(key,value)
在jComboBox中添加项目时,我仍然遇到此错误错误代码是:
项无法转换为String jComboTemp1.addItem(新项目(" CA","加拿大"));
这是课程项目:
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"));
答案 0 :(得分:1)
你有几个问题:
public class Item {
该类不使用泛型。
public Item(int id, String description) {
构造函数需要“int”和“String”。
jComboTemp1.addItem(new Item<String>("CA", "Canada"));
创建Item对象时,您有两个错误:
所以你有两个解决方案。你需要:
如果您不使用泛型,则需要将适当的参数传递给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"));
现在该类支持String格式的隐藏值,并且Item
类不需要进行任何更改。
答案 1 :(得分:0)
取而代之的是:
jComboTemp1.addItem(new Item<String>("CA", "Canada"));
使用:
jComboTemp1.addItem("CA");
jComboTemp1.addItem("Canada");
或
jComboTemp1.addItem(new Item(1, "CA"));
jComboTemp1.addItem(new Item(2, "Canada"));
您有一个构造函数Item(int, String)
而不是Item(String)
答案 2 :(得分:0)
这里没有提供足够的代码:
您在这里使用什么Item类:
jComboTemp1.addItem(new Item<String>("CA", "Canada"));
您实例化一个泛型类,但您的Item类不是泛型类
以下代码适用于我
class Item {
private final int id;
private final String name;
public Item(int id, String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return getName();
}
}
JComboBox<Item> combobox = new JComboBox<Item>();
combobox.addItem(new Item(4711, "name1"));
combobox.addItem(new Item(4712, "name2"));
combobox.addItem(new Item(4713, "name3"));