我正在尝试开发一个小应用程序,其中有一个JComboBox,它在开始时初始化了一些从JTable检索的元素。由于插入了不同的数据,JTable将不断变化。
但是,每当我将新数据插入数据库或将其删除时,只有在我关闭程序并打开它时,组合框才会更新。 任何人都可以给我一些关于我做错的提示/帮助。
这是我的代码:
private void fillcombopart() {
try {
String sql = "select * from partrepair";
conn = DriverManager.getConnection("jdbc:sqlite:C:\\database.db");
PreparedStatement pst = conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
DefaultComboBoxModel model12 = new DefaultComboBoxModel();
while (rs.next()) {
model12.addElement(rs.getString("Name"));
model12.addListDataListener(partCombo);
}
partCombo.setModel(model12);
// partCombo.addItem(rs.getString("Name"));
pst.close();
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
数据库的更新方法
public void refresh2() {
try {
String sql12 = "select * from partrepair";
conn = DriverManager.getConnection(s);
PreparedStatement pst12 = conn.prepareStatement(sql12);
ResultSet rs = pst12.executeQuery();
tablerepair.setModel(DbUtils.resultSetToTableModel(rs));
pst12.close();
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
答案 0 :(得分:2)
每当我将新数据插入数据库或将其删除时,只有当我关闭程序并打开它时,组合框才会更新。谁能给我一个提示/帮助我做错了什么。
您似乎只设置了一次JComboBox的模型,之后再也没有更新它,或者如果您这样做,则不会向我们展示。该模型不会因魔术而改变 - 如果数据库的数据发生变化,您必须编写代码来更改它。这意味着您必须以某种方式监听数据库的更改,然后在发生这种情况时,更新您的JComboBox模型。
答案 1 :(得分:0)
如果我没错,只检查一次数据库。尝试使用分离的线程。