valor seleccionar obtener item eventos evento elementos datos asignar agregar java swing combobox jcombobox

seleccionar - jcombobox java netbeans eventos



Valor diferente de Java ComboBox para nombrar (4)

Tengo un cuadro combinado de Java y un proyecto vinculado a una base de datos SQLite. Si tengo un objeto con una ID y un nombre asociado:

class Employee { public String name; public int id; }

¿Cuál es la mejor manera de colocar estas entradas en un JComboBox para que el usuario vea el nombre del empleado pero puedo recuperar el ID del empleado cuando lo haga?

selEmployee.getSelectedItem();

Gracias


Agregue el objeto de empleado a JComboBox y sobrescriba el método toString de la clase de empleado para devolver el nombre de Empleado.

Employee emp=new Employee("Name Goes here"); comboBox.addItem(emp); comboBox.getSelectedItem().getID(); ... public Employee() { private String name; private int id; public Employee(String name){ this.name=name; } public int getID(){ return id; } public String toString(){ return name; } }


Primer método: implementar toString() en la clase Employee y hacer que devuelva el nombre. Haga que su modelo de cuadro combinado contenga instancias de empleado. Al obtener el objeto seleccionado del combo, obtendrá una instancia de Empleado y podrá obtener su ID.

Segundo método: si toString() devuelve algo que no sea el nombre (información de depuración, por ejemplo), haga lo mismo que arriba, pero además configure un renderizador de celda personalizado para su combo. Este procesador de celdas tendrá que emitir el valor a Employee, y establecer el texto de la etiqueta con el nombre del empleado.

public class EmployeeRenderer extends DefaulListCellRenderer { @Override public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); setText(((Employee) value).getName()); return this; } }


Puede crear su DefaultComboBoxModel personalizado. En eso crea el vector de tus datos en tu caso Vector<Employee> empVec . También debe sobrescribir el método getSelectedItem() y usar getSelectedIndex() para recuperar el valor del vector.


Creo que la mejor y simple forma de hacerlo sería usar HashMap algo así cuando estés llenando tu JComboBox con ResultSet

HashMap<Integer, Integer> IDHolder= new HashMap<>(); int a=0; while(rs.next()) { comboBox.addItem(rs.getString(2)); //Name Column Value IDHolder.put(a, rs.getInt(1)); //ID Column Value a++; }

Ahora, siempre que quiera obtener el ID de cualquier ID de elemento de comboBox seleccionado, puede hacerlo simplemente

int Id = IDHolder.get(comboBox.getSelectedIndex());