Как отобразить объект JComboBox на его соответствующий идентификатор?

У меня есть таблица в базе данных, которая содержит два поля

  • идентификатор
  • имя:

Я заполнил JComboBox "combo1" со всеми именами, сохраненными в DB. Теперь я хочу это каждый раз, когда пользователь выбирает объект "combo1", я могу распознать "идентификатор" выбранного пункта.

Но проблема состоит в том, что имена могут быть дубликатами в таблице. Таким образом позвольте, принимают, имеет ли таблица 3 двойных названия, то

Q1. Как показать объекты в "combo1" так, чтобы пользователь мог различать те общие названия?

Q2. После того, как пользователь нажал объект, Как я могу распознать что, на который объект пользователь нажал, если выбранный пункт имеет дубликаты?

7
задан Yatendra Goel 19 January 2010 в 18:40
поделиться

3 ответа

Используйте класс для хранения вашей пары данных. 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);
11
ответ дан 6 December 2019 в 12:51
поделиться

Если вы получаете все комбинации ID / Name, почему бы не сделать класс, который держит их вместе, вы можете просто использовать этот объект, возвращенный из JCombobox, чтобы получить идентификатор.

Например:

class NameIDObj{

int id;
String name;

NameIDObj(int id, String name){
this.id = id;
this.name = name;
}

public String toString(){
 return name+" ("+id+")";
}


}
3
ответ дан 6 December 2019 в 12:51
поделиться

jCombobobox принимает объект [] как его значения. Я не совсем уверен, но вы можете попробовать создать свой собственный класс, который имеет имя и идентификатор для каждого элемента JCombobox и попробуйте пройти массив этих пользовательских объектов в JCombobox.

2
ответ дан 6 December 2019 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: