2010-01-19 12 views
6

Ich habe eine Tabelle in einer Datenbank, die zwei FelderWie wird das JComboBox-Objekt der entsprechenden ID zugeordnet?

  • id
  • Name enthält

ich bevölkert haben eine JComboBox "combo1" mit allen in der DB gespeicherten Namen. Jetzt möchte ich, dass, wenn ein Benutzer ein Element der "Combo1" auswählt, ich die "ID" des ausgewählten Elements erkennen kann.

Aber das Problem ist, dass Namen in einer Tabelle Duplikate sein können. Nehmen wir an, wenn eine Tabelle 3 doppelte Namen hat, dann

Q1. Wie zeigen Sie die Elemente in der "Combo1", so dass Benutzer zwischen diesen allgemeinen Namen unterscheiden können?

Q2. Nachdem der Benutzer auf ein Element geklickt hat, Wie kann ich erkennen, auf welches Objekt der Benutzer geklickt hat, wenn das ausgewählte Objekt Duplikate enthält?

Antwort

10

eine Klasse verwenden, um Ihre Paar Daten zu speichern. JComboBox verwendet seine toString() -Methode als Bezeichnung.

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

Wenn Sie alle ID/Name-Kombinationen erhalten, warum nicht eine Klasse, die sie beide zusammenhält, dann können Sie nur das Objekt von der JComboBox zurückgegeben, um die ID zu erhalten.

zB:

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 verwendet als Werte ein Objekt []. Ich bin mir nicht absolut sicher, aber Sie könnten versuchen, Ihre eigene Klasse zu erstellen, die für jedes JComboBox-Objekt einen Namen und eine ID hat, und versuchen, ein Array dieser benutzerdefinierten Objekte an die JComboBox zu übergeben.

Verwandte Themen