У меня есть таблица в базе данных, которая содержит два поля
Я заполнил JComboBox "combo1" со всеми именами, сохраненными в DB. Теперь я хочу это каждый раз, когда пользователь выбирает объект "combo1", я могу распознать "идентификатор" выбранного пункта.
Но проблема состоит в том, что имена могут быть дубликатами в таблице. Таким образом позвольте, принимают, имеет ли таблица 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, чтобы получить идентификатор.
Например:
class NameIDObj{
int id;
String name;
NameIDObj(int id, String name){
this.id = id;
this.name = name;
}
public String toString(){
return name+" ("+id+")";
}
}
jCombobobox принимает объект [] как его значения. Я не совсем уверен, но вы можете попробовать создать свой собственный класс, который имеет имя и идентификатор для каждого элемента JCombobox и попробуйте пройти массив этих пользовательских объектов в JCombobox.