Как сопоставить элемент JComboBox с соответствующим идентификатором? - PullRequest
7 голосов
/ 19 января 2010

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

  • ID
  • имя

Я заполнил JComboBox "combo1" всеми именами, хранящимися в БД. Теперь я хочу, чтобы каждый раз, когда пользователь выбирал элемент «combo1», я мог распознать «id» выбранного элемента.

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

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

Q2. После того, как пользователь щелкнул элемент, как узнать, на какой элемент пользователь щелкнул, если в выбранном элементе есть дубликаты?

Ответы [ 3 ]

11 голосов
/ 19 января 2010

используйте класс для хранения вашей пары данных.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);
3 голосов
/ 19 января 2010

Если вы получаете все комбинации 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 голосов
/ 19 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...