2010-01-19 2 views
6

У меня есть таблица в базе данных, которая содержит два поляКак сопоставить элемент JComboBox с его соответствующим идентификатором?

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

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

Но проблема в том, что имена могут быть дублирующими в таблице. Поэтому допустим, если таблица имеет 3 дубликата имен, то

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

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

ответ

10

использовать класс для хранения пары данных. 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); 
2

Если вы получаете все комбинации 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+")"; 
} 


} 
1

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

Смежные вопросы