我在包含两个字段的数据库中有一个表
- ID
- 姓名
我已经用存储在数据库中的所有名称填充了一个 JComboBox“combo1”。现在我希望每当用户选择“combo1”的项目时,我都可以识别所选项目的“id”。
但问题是名称可以在表中重复。所以假设一个表有 3 个重名,那么
Q1。如何显示“combo1”中的项目,以便用户区分这些常用名称?
Q2。用户单击一个项目后,如果所选项目有重复项,我如何识别用户单击了哪个项目?
使用一个类来存储您的一对数据。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);
如果您获得了所有 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+")";
}
}
JComboBox 接受一个 Object[] 作为它的值。我不确定,但您可以尝试为每个 JComboBox 项目创建自己的类,该类具有名称和 id,并尝试将这些自定义对象的数组传递给 JComboBox。