2010-01-19 7 views
6

Mam tabelę w bazie danych, która zawiera dwa polaJak odwzorować element JComboBox na odpowiadający mu identyfikator?

  • id
  • nazwa

Mam zaludnionych do JComboBox „combo1” ze wszystkimi nazwami przechowywanych w DB. Teraz chcę, aby za każdym razem, gdy użytkownik wybierze element "combo1", mogę rozpoznać "identyfikator" wybranego elementu.

Ale problem polega na tym, że nazwy mogą być duplikatami w tabeli. Załóżmy więc, że tabela ma 3 zduplikowane nazwy, a następnie

Q1. Jak wyświetlić elementy w "combo1", aby użytkownik mógł rozróżnić te wspólne nazwy?

Q2. Po kliknięciu elementu przez użytkownika, Jak mogę rozpoznać, na którym elemencie kliknął użytkownik, jeśli wybrany element ma duplikaty?

Odpowiedz

10

użyć klasy do przechowywania parę danych. JComboBox użyje swojej metody toString() jako etykiety.

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

Jeśli uzyskasz wszystkie kombinacje id/nazwa, dlaczego nie utworzyć klasy, która je obie razem, wtedy możesz po prostu użyć obiektu zwróconego z JComboBox, aby uzyskać identyfikator.

np

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 przyjmuje obiekt [] jako swoje wartości. Nie jestem absolutnie pewien, ale możesz spróbować stworzyć własną klasę, która ma nazwę i identyfikator dla każdego elementu JComboBox i spróbować przekazać tablicę tych niestandardowych obiektów do JComboBox.

Powiązane problemy