带有隐藏数据的 jComboBox java
jCombo Box With Hidden Data java
我在 java 中搜索了如何将额外数据放入 jComboBox 中,我发现的最多结果是创建一个包含属性键和值的项目 Class。
我已经做到了,但是当我尝试使用 `new Item(key, value),
在 jComboBox 中添加项目时,我仍然遇到这个错误
错误代码是:
Item cannot be converted to String
jComboTemp1.addItem(new Item("CA", "Canada"));
这是 class 项目:
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"));
而不是:
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)
您在此处提供的代码不足:
您在这里使用什么项目class:
jComboTemp1.addItem(new Item<String>("CA", "Canada"));
您实例化了一个泛型 class 但您的项目 class 不是泛型 class
以下代码对我有用
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"));
你有几个问题:
public class Item {
class不使用泛型。
public Item(int id, String description) {
构造函数需要 "int" 和 "String"。
jComboTemp1.addItem(new Item<String>("CA", "Canada"));
创建 Item 对象时有两个错误:
- 您正在尝试使用泛型
- 你传递了错误的参数。
所以你有两个解决方案。您需要:
- 正确使用泛型,或者
- 不要使用泛型。
如果您不使用泛型,则需要将适当的参数传递给 Item
对象:
jComboTemp1.addItem(new Item(1, "Canada"));
如果您确实想使用泛型,则需要修改 Item
class 以使用泛型。
检查 Item
class 在 Combo Box With Hidden Data 中找到的通用 Item
对象。该对象是一个更完整的实现,因为它还实现了 equals(...)
和 hashcode()
方法。
如果您想在 Item
class 中包含 Integer
数据,请使用上面 link 中的 Item
class使用:
JComboBox<Item<Integer>> jcomboTemp1 = new JComboBox<Item<Integer>>();
...
jcomboTemp1.addItem(new Item<Integer>(1, "Canada"));
使用通用对象稍微复杂一些,但您可以获得编译时检查的额外安全性,以确保将正确的数据添加到 class。
通用的 class 更可重用。您可以轻松地将代码更改为:
JComboBox<Item<String>> jcomboTemp1 = new JComboBox<Item<String>>();
...
jcomboTemp1.addItem(new Item<String>("CA", "Canada"));
现在 class 支持字符串格式的隐藏值,并且 Item
class.
无需更改
我在 java 中搜索了如何将额外数据放入 jComboBox 中,我发现的最多结果是创建一个包含属性键和值的项目 Class。
我已经做到了,但是当我尝试使用 `new Item(key, value),
在 jComboBox 中添加项目时,我仍然遇到这个错误错误代码是:
Item cannot be converted to String jComboTemp1.addItem(new Item("CA", "Canada"));
这是 class 项目:
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"));
而不是:
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)
您在此处提供的代码不足:
您在这里使用什么项目class:
jComboTemp1.addItem(new Item<String>("CA", "Canada"));
您实例化了一个泛型 class 但您的项目 class 不是泛型 class
以下代码对我有用
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"));
你有几个问题:
public class Item {
class不使用泛型。
public Item(int id, String description) {
构造函数需要 "int" 和 "String"。
jComboTemp1.addItem(new Item<String>("CA", "Canada"));
创建 Item 对象时有两个错误:
- 您正在尝试使用泛型
- 你传递了错误的参数。
所以你有两个解决方案。您需要:
- 正确使用泛型,或者
- 不要使用泛型。
如果您不使用泛型,则需要将适当的参数传递给 Item
对象:
jComboTemp1.addItem(new Item(1, "Canada"));
如果您确实想使用泛型,则需要修改 Item
class 以使用泛型。
检查 Item
class 在 Combo Box With Hidden Data 中找到的通用 Item
对象。该对象是一个更完整的实现,因为它还实现了 equals(...)
和 hashcode()
方法。
如果您想在 Item
class 中包含 Integer
数据,请使用上面 link 中的 Item
class使用:
JComboBox<Item<Integer>> jcomboTemp1 = new JComboBox<Item<Integer>>();
...
jcomboTemp1.addItem(new Item<Integer>(1, "Canada"));
使用通用对象稍微复杂一些,但您可以获得编译时检查的额外安全性,以确保将正确的数据添加到 class。
通用的 class 更可重用。您可以轻松地将代码更改为:
JComboBox<Item<String>> jcomboTemp1 = new JComboBox<Item<String>>();
...
jcomboTemp1.addItem(new Item<String>("CA", "Canada"));
现在 class 支持字符串格式的隐藏值,并且 Item
class.