Как я могу получить значение идентификатора из базы данных при выборе элемента из выпадающего списка?
У меня есть этот метод, который заполняет мой комбобокс:
public DefaultComboBoxModel llenarComboFamilia() throws SQLException {
String query = "select * from familias";
DefaultComboBoxModel df = new DefaultComboBoxModel();
abrirConexion();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
//df.addElement(rs.getObject("This is the ID I need"));
df.addElement(rs.getString("String from DB"));
}
cerrarConexion();
return df;
}
Тогда я загружаю это с:
jComboBox2.setModel(con.llenarComboFamilia());
И когда я нажимаю кнопку "Зарегистрироваться", я получаю:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
Persona p = new Persona(jTextField7.getText(), 1,
jComboBox2.getSelectedIndex() + 1,
jTextField5.getText(), jTextField6.getText());
con.insertarPersonasProp(p);
}
Но jComboBox2.getSelectedIndex() + 1
у меня не работает, потому что мне нужно значение идентификатора из базы данных, а не выбранный индекс.
Есть идеи?
2 ответа
Вы можете использовать Вектор для хранения идентификаторов. просто заполните вектор с id каждого элемента, когда вы добавляете элемент в выпадающий список. Вектор и выпадающий список будут иметь одинаковое количество элементов, поэтому идентификатором элемента 10 в выпадающем списке будет элемент 10 в векторе. тогда вы можете получить идентификатор элемента, выбранного в данный момент в выпадающем списке, из вектора, такого как vectorIDs.get( jComboBox2.getSelectedIndex ())
Создайте пользовательский объект, содержащий поля "Id" и "Description" из вашего запроса SQL. Затем вы добавляете этот объект в выпадающий список и используете пользовательский рендер.
См. Combo Box With Custom Renderer для получения дополнительной информации и примера кода.