2010-01-19 7 views
6

J'ai une table dans une base de données qui contient deux champsComment mapper l'élément JComboBox à son ID correspondant?

  • id
  • Nom

Je peuplé un JComboBox « combo1 » avec tous les noms stockés dans la base de données. Maintenant, je veux que chaque fois qu'un utilisateur sélectionne un élément de la "combo1", je peux reconnaître le "id" de l'élément sélectionné.

Mais le problème est que les noms peuvent être des doublons dans une table. Supposons donc que si une table a 3 noms en double, alors

Q1. Comment afficher les éléments dans le "combo1" afin que l'utilisateur puisse faire la distinction entre ces noms communs?

Q2. Après que l'utilisateur a cliqué sur un élément, comment puis-je savoir sur quel élément l'utilisateur a cliqué, si l'élément sélectionné a des doublons?

Répondre

10

utiliser une classe pour stocker votre paire de données. JComboBox utilisera sa méthode toString() comme label.

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

Si vous obtenez toutes les combinaisons id/name, pourquoi ne pas créer une classe qui les contient toutes les deux, alors vous pouvez simplement utiliser cet objet renvoyé par JComboBox pour obtenir l'ID.

par exemple:

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 utilise un objet [] comme valeurs. Je ne suis pas absolument certain, mais vous pourriez essayer de créer votre propre classe qui a un nom et un id pour chaque élément JComboBox et essayer de passer un tableau de ces objets personnalisés à la JComboBox.