2

将新数据输入数据库后,我的 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);          

}

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

4

3 回答 3

2

您不必fireTableDataChanged()显式调用;DefaultTableModel更新模型时会自动执行此操作,如相关示例中所示。

于 2012-05-02T11:37:55.347 回答
2

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

于 2012-05-02T11:57:48.523 回答
0
  1. 我创建了一个新项目,其中我选择了一个新框架并将一个表格、一个标签、一个文本字段和一个按钮从摇摆控件拖动到您的框架。

2.在后台建表……</p>

  1. 从此链接下载 rs2xml jar 文件

下载 rs2xml.jar

  1. 将其添加到项目库中……</li>

右键单击项目 > 属性 > 库 > 添加 Jar/文件夹 > 选择 jar > ok

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;
}
}
  1. 使用以下代码调用页面中的函数

    con=new DBConnect();
    statement=con.getConnection().createStatement();
    

7.然后创建一个更新函数,输入以下代码……</p>

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.然后运行项目……</p>

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

插入删除或更新java Netbeans ID中的数据后如何刷新JTable

于 2015-01-12T08:54:37.553 回答