我有这种方法可以填充我的组合框:
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
对我不起作用,因为我需要数据库中的ID值,而不是选定的索引。
有什么想法吗?
答案 0 :(得分:0)
您可以使用Vector来存储ID。当您将项目添加到组合框时,只需使用每个项目的ID填充向量。向量和组合框将具有相同数量的项目,因此组合框中项目10的id将是向量中的项目10。那么你可以从vectorIDs.get这样的向量中获取当前在组合框上选择的项目的id( jComboBox2.getSelectedIndex ())
答案 1 :(得分:0)
创建自定义对象以包含SQL查询中的“Id”和“Description”字段。然后将此对象添加到组合框并使用自定义渲染器。
有关详细信息和示例代码,请参阅Combo Box With Custom Renderer。