将jCombobox与MySQL表同步
我使用NetBeans GUI-Designer创建了一个数据库应用程序。
使用Comboboxes的GUI(绑定到MySQL数据库表用户和团队):
on Button new – > jDialog – 执行查询以在数据库中存储新用户:
问题:Combobox在程序启动时更新,但在运行程序时没有。
问题:是否可以在保存新用户或团队时直接更新combobox中的条目? 我怎么能实现这个?
编辑:这是我在点击JDialog
的saveButton
时所做的事情:
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");'
在数据库中插入新用户时,只需更新组件的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);
我遇到了类似的问题:如果你在数据库中输入任何东西,应该反映在JComboBox中,那么你就不能改变那个combobox的值。 如果你可以直接在JComboBox上添加东西,那就太棒了,但是你必须从中获取数据,从中创建一个新的ComboBoxModel,然后将你的JComboBox设置为那个新模型。
在这里,我使用DefaultComboBoxModel,它可以采用对象数组(通常是字符串)或向量。 如果使用向量来表示基础数据模型,则更容易,因为向量是动态数据结构。
我的代码:
Vector s = new Vector (); 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索引! 每次都得到我。