当JTable中的数据发生更改时,ComboBox不会刷新

时间:2015-03-18 22:07:07

标签: java swing jtable refresh jcombobox

我正在尝试开发一个小应用程序,其中有一个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();
        }
    }

2 个答案:

答案 0 :(得分:2)

  

每当我将新数据插入数据库或将其删除时,只有当我关闭程序并打开它时,组合框才会更新。谁能给我一个提示/帮助我做错了什么。

您似乎只设置了一次JComboBox的模型,之后再也没有更新它,或者如果您这样做,则不会向我们展示。该模型不会因魔术而改变 - 如果数据库的数据发生变化,您必须编写代码来更改它。这意味着您必须以某种方式监听数据库的更改,然后在发生这种情况时,更新您的JComboBox模型。

答案 1 :(得分:0)

如果我没错,只检查一次数据库。尝试使用分离的线程。