Java DefaultTableModel不刷新

Java DefaultTableModel不刷新,java,swing,jtable,refresh,defaulttablemodel,Java,Swing,Jtable,Refresh,Defaulttablemodel,新数据输入数据库后,我的JTable不会刷新。我需要终止并再次执行以查看结果。我已经包括DefaultTableModel和fireTableDataChanged。我还错过了什么?谢谢 { columnNames = new Vector(); data = new Vector(); try{ //database stuffs } catch{ } DefaultTableModel tm = new D

新数据输入数据库后,我的JTable不会刷新。我需要终止并再次执行以查看结果。我已经包括DefaultTableModel和fireTableDataChanged。我还错过了什么?谢谢

{
    columnNames = new Vector();
    data = new Vector(); 

    try{
        //database stuffs
    }

    catch{
    }  


    DefaultTableModel tm = new DefaultTableModel(); 
    JTable table = new JTable (tm); 
    JScrollPane scrollPane  = new JScrollPane(table);

    table = new JTable(data,columnNames)            
    {               
        public boolean isCellEditable(int row, int column){
            return false;
        }        

            public void newDataAvailable (TableModelEvent e){
            }
    };      

    scrollPane = new JScrollPane(table);            
    scrollPane.setBounds(33, 47, 256, 228);      
    panel.add(scrollPane);          

}

我可以创建“刷新按钮”并刷新值吗

您不应该显式调用fireTableDataChanged;更新模型时,DefaultTableModel会自动执行此操作,如本相关文档所示。

您不必显式调用fireTableDataChanged;当您更新模型时,DefaultTableModel会自动执行此操作,如本相关文档所示。

您可以创建新的JTable实例。只创建一次,并将新模型仅设置为正确添加到容器中的现有JTable。

您可以创建新的JTable实例。只创建一次,并将新模型仅设置为正确添加到容器中的现有JTable

我创建了一个新项目,我选择了一个新框架,并将表格、标签、文本字段和按钮从swing控件拖动到框架中。 2.在后端创建一个表

从这个链接下载rs2xml jar文件 将其添加到项目库… 右键单击项目>属性>库>添加Jar/文件夹>选择Jar>确定

5.然后使用以下代码连接mysql

public class DBConnect {

Connection connection = null;

public Connection getConnection() {
    try {
        Class.forName("com.mysql.jdbc.Driver");
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
        System.out.println("connection successfully");
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return connection;
}
}
con=new DBConnect();
statement=con.getConnection().createStatement();
使用以下代码调用页面中的函数

public class DBConnect {

Connection connection = null;

public Connection getConnection() {
    try {
        Class.forName("com.mysql.jdbc.Driver");
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
        System.out.println("connection successfully");
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return connection;
}
}
con=new DBConnect();
statement=con.getConnection().createStatement();
7.然后使用以下代码创建更新函数类型

void update_table() throws SQLException{
    rs=statement.executeQuery("select * from details");
    jTable1.setModel(DbUtils.resultSetToTableModel(rs));
}
8.在按钮操作事件中,键入以下内容并调用更新功能

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

   try {
       Object name=jTextField1.getText();
       String sql="insert into details (name) values('"+name+"')";
        int  resultset=statement.executeUpdate(sql);
        update_table();
   } catch (SQLException ex) {
       Logger.getLogger(update.class.getName()).log(Level.SEVERE, null, ex);
   }
}

9.然后运行项目

您也可以按照本教程进行操作:-

我创建了一个新项目,我选择了一个新框架,并将表格、标签、文本字段和按钮从swing控件拖动到框架中。 2.在后端创建一个表

从这个链接下载rs2xml jar文件 将其添加到项目库… 右键单击项目>属性>库>添加Jar/文件夹>选择Jar>确定

5.然后使用以下代码连接mysql

public class DBConnect {

Connection connection = null;

public Connection getConnection() {
    try {
        Class.forName("com.mysql.jdbc.Driver");
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
        System.out.println("connection successfully");
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return connection;
}
}
con=new DBConnect();
statement=con.getConnection().createStatement();
使用以下代码调用页面中的函数

public class DBConnect {

Connection connection = null;

public Connection getConnection() {
    try {
        Class.forName("com.mysql.jdbc.Driver");
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
        System.out.println("connection successfully");
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return connection;
}
}
con=new DBConnect();
statement=con.getConnection().createStatement();
7.然后使用以下代码创建更新函数类型

void update_table() throws SQLException{
    rs=statement.executeQuery("select * from details");
    jTable1.setModel(DbUtils.resultSetToTableModel(rs));
}
8.在按钮操作事件中,键入以下内容并调用更新功能

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

   try {
       Object name=jTextField1.getText();
       String sql="insert into details (name) values('"+name+"')";
        int  resultset=statement.executeUpdate(sql);
        update_table();
   } catch (SQLException ex) {
       Logger.getLogger(update.class.getName()).log(Level.SEVERE, null, ex);
   }
}

9.然后运行项目

您也可以按照本教程进行操作:-


谢谢我已经删除了fireTableDataChanged,它仍然不能工作。我应该添加新的可用数据吗?使用PreparedStatement将数据直接添加到数据库中,这是否会影响自动更新?在数据库中插入新数据并提交结果后,您需要再次运行原始查询以获取新行。谢谢。我已经删除了fireTableDataChanged,它仍然不能工作。我应该添加新的可用数据吗?使用PreparedStatement将数据直接添加到数据库中,这是否会影响自动更新?在数据库中插入新数据并提交结果后,您需要再次运行原始查询以获取新行。谢谢。我修改了我的代码,但它似乎仍然不起作用。我应该调用特定的方法来刷新值吗?我必须验证或重新绘制我的JTable吗?谢谢。我修改了我的代码,但它似乎仍然不起作用。我应该调用特定的方法来刷新值吗?我是否必须验证或重新绘制我的JTable?