将jCombobox与MySQL表同步

时间:2011-11-25 10:24:20

标签: java mysql swing jcombobox

我使用NetBeans GUI-Designer创建了一个数据库应用程序。

带有Comboboxes的GUI(绑定到MySQL数据库表用户和团队): Combobox1 & 2 to select a user and/or a team

on Button new - > jDialog - 执行查询以在数据库中存储新用户: jDialog with textfield, save and cancel

问题:Combobox在程序启动时更新,但在运行程序时没有更新。

问题:是否可以在保存新用户或团队时直接更新组合框中的条目?我怎么能实现这个呢?

修改:点击saveButton中的JDialog时,我就是这样做的:

int k=st.executeUpdate(
    "INSERT INTO User (username) " + " VALUES ('"+ name + "')");
//Here I'd like to update the jComboBox1 directly if possible
Outerclass.jComboBox1...; 
JOptionPane.showMessageDialog(null, "User is successfully saved");' 

2 个答案:

答案 0 :(得分:4)

在数据库中插入新用户时,只需更新组件的ComboBoxModel即可。如果这没有帮助,请提供显示问题的sscce

附录:提及JComboBox

private final JComboBox combo = new JComboBox();

您可以更新其型号,如下所示。此示例将name添加到列表的开头,但SortedComboBoxModel是一个有吸引力的替代方案。

DefaultComboBoxModel model = (DefaultComboBoxModel) combo.getModel();
model.insertElementAt(name, 0);

附录:更简单地说,使用combo本身可用的方法,

combo.insertElementAt(name, 0);

答案 1 :(得分:1)

我遇到了类似的问题:如果你在数据库中输入任何东西,那应该反映在JComboBox中,那么你就不能改变那个组合框的值。如果你可以直接在JComboBox上添加东西,那就太好了,但是你必须从中获取数据,从中创建一个新的ComboBoxModel,然后将你的JComboBox设置为那个新模型。

在这里,我使用DefaultComboBoxModel,它可以采用对象数组(通常是字符串)或向量。如果使用向量来表示基础数据模型,则更容易,因为向量是动态数据结构。

我的代码:

Vector<String> s = new Vector<String>();
try {
    // I'm using prepared statements, get the ResultSet however you like
    ResultSet rs = myPreparedStatement.executeQuery(); 
    while ( rs.next() ) {
        // Change "1" to whatever column holds your data
        s.add(rs.getString(1)); 
    }
} catch (SQLException ex) {
    ex.printStackTrace(); // or whatever
}
DefaultComboBoxModel jcbModel = new DefaultComboBoxModel(s);
jcb.setModel(jcbModel);

编辑:请记住,ResultSet列是1索引的,而不是0索引的!每次都找我。