2010-01-19 19 views
6

Tengo una tabla en una base de datos que contiene dos campos¿Cómo correlacionar el elemento JComboBox con su ID correspondiente?

  • id
  • nombre

he llenado una "combo1" JComboBox con todos los nombres almacenados en la base de datos. Ahora quiero que siempre que un usuario seleccione un elemento del "combo1", pueda reconocer el "id" del elemento seleccionado.

Pero el problema es que los nombres se pueden duplicar en una tabla. Así que supongamos que si una tabla tiene 3 nombres duplicados, entonces

Q1. ¿Cómo mostrar los elementos en el "combo1" para que el usuario pueda distinguir entre esos nombres comunes?

Q2. Después de que el usuario ha hecho clic en un elemento, ¿cómo puedo reconocer en qué elemento ha hecho clic el usuario, si el elemento seleccionado tiene elementos duplicados?

Respuesta

10

utilizar una clase para almacenar su par de datos. JComboBox usará su método toString() como etiqueta.

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 obtiene todas las combinaciones de id/nombre, ¿por qué no hacer una clase que los mantenga juntos, entonces puede usar ese objeto devuelto por JComboBox para obtener la ID.

por ejemplo:

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 toma un Objeto [] como sus valores. No estoy del todo seguro, pero podría intentar crear su propia clase que tenga un nombre y una identificación para cada elemento de JComboBox e intente pasar una matriz de estos objetos personalizados al JComboBox.

Cuestiones relacionadas