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

Java 如何将JComboBox项映射到其相应的ID?,java,swing,jcombobox,Java,Swing,Jcombobox,我在数据库中有一个包含两个字段的表 身份证 名字 我用数据库中存储的所有名称填充了JComboBox“combo1”。现在,我希望每当用户选择“combo1”中的一个项目时,我都能识别所选项目的“id” 但问题是,表中的名称可能重复。假设一个表有3个重复的名称,那么 问题1。如何显示“combo1”中的项目,以便用户能够区分这些常用名称 问题2。在用户单击一个项目后,如果所选项目有重复项,我如何识别用户单击的项目?如果您获得了所有的id/名称组合,为什么不创建一个类将它们保存在一起,那么您可

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

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

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

问题1。如何显示“combo1”中的项目,以便用户能够区分这些常用名称


问题2。在用户单击一个项目后,如果所选项目有重复项,我如何识别用户单击的项目?

如果您获得了所有的id/名称组合,为什么不创建一个类将它们保存在一起,那么您可以使用从JComboBox返回的对象来获取id

例如:


使用类来存储数据对。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);

JComboBox接受对象[]作为其值。我不是绝对确定,但您可以尝试创建自己的类,该类具有每个JComboBox项的名称和id,并尝试将这些自定义对象的数组传递给JComboBox

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);