Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当JTable中的数据更改时,ComboBox不会刷新_Java_Swing_Jtable_Refresh_Jcombobox - Fatal编程技术网

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

Java 当JTable中的数据更改时,ComboBox不会刷新,java,swing,jtable,refresh,jcombobox,Java,Swing,Jtable,Refresh,Jcombobox,我正在尝试开发一个小应用程序,其中有一个JComboBox,它在开始时用一些元素初始化,从JTable中检索。由于插入的数据不同,JTable将不断变化 但是,每当我向数据库插入新数据或将其删除时,组合框不会更新,只有在我关闭并打开程序时才会更新。 谁能给我一个提示/帮助,说明我做错了什么 这是我的密码: private void fillcombopart() { try { String sql = "select * from partrepair

我正在尝试开发一个小应用程序,其中有一个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();
        }
    }
每当我向数据库插入或删除新数据时,组合框都不会更新,只有在我关闭并打开程序时才会更新。谁能给我一个提示/帮助,说明我做错了什么


您似乎只设置了JComboBox的模型一次,之后再也不会更新它,或者,如果您这样做了,就不会显示给我们。模型不会神奇地改变——如果数据库的数据发生变化,您必须编写代码来改变它。这意味着您必须以某种方式侦听数据库的更改,然后在发生这种情况时,更新JComboBox的模型。

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

我添加了model12.addListDataListener(partCombo);,这应该听的变化,但我该如何更新it@jayd:这让我很困惑——要求JComboBox的模型听同一个JComboBox——没有意义,而且肯定不会收到来自数据库重新更改的通知。您可以考虑使用。还有其他方法吗?没有多少数据库提供监听更改的机制。你最好的选择是提供一种方法,通过这种方法,你可以自动或手动检查数据库,并相应地更新combobox的内容……我为我的jtable提供了一种更新方法,当数据库发生更改时,它将更新jtable