如何将JComboBox项映射到其对应的ID?

时间:2010-01-19 18:40:44

标签: java swing jcombobox

我在数据库中有一个包含两个字段的表

  • ID
  • 名称

我已经使用存储在数据库中的所有名称填充了一个JComboBox“combo1”。现在我希望每当用户选择“combo1”的项目时,我都能识别所选项目的“id”。

但问题是名称可能在表格中重复。因此,假设一个表有3个重复的名称,那么

Q1。如何在“combo1”中显示项目,以便用户可以区分这些常用名称?

Q2。用户点击某个项目后,如果所选项目有重复项,如何识别该用户点击了哪个项目?

3 个答案:

答案 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。