我在数据库中有一个包含两个字段的表
我已经使用存储在数据库中的所有名称填充了一个JComboBox“combo1”。现在我希望每当用户选择“combo1”的项目时,我都能识别所选项目的“id”。
但问题是名称可能在表格中重复。因此,假设一个表有3个重复的名称,那么
Q1。如何在“combo1”中显示项目,以便用户可以区分这些常用名称?
Q2。用户点击某个项目后,如果所选项目有重复项,如何识别该用户点击了哪个项目?
答案 0 :(得分:11)
使用类来存储您的数据对。 JComboBox将使用其toString()方法作为标签。
public class Item
{
int id;
String name;
public String toString()
{
return this.name+"("+id+")";
}
}
(...)
Item array[]=new Item[]{ ... };//fill the array with your items
JComboBox c=new JComboBox(array);
(...)
//use the combo
(...)
Item selected=(Item)c.getSelectedItem();
System.err.println("id is "+selected.id);
答案 1 :(得分:3)
如果你获得了所有的id / name组合,为什么不创建一个将它们保存在一起的类,那么你可以使用从JComboBox返回的那个对象来获取ID。
例如:
class NameIDObj{
int id;
String name;
NameIDObj(int id, String name){
this.id = id;
this.name = name;
}
public String toString(){
return name+" ("+id+")";
}
}
答案 2 :(得分:2)
JComboBox接受Object []作为其值。我并不完全确定,但您可以尝试创建自己的类,其中包含每个JComboBox项的名称和ID,并尝试将这些自定义对象的数组传递给JComboBox。