DefaultTableModel不刷新

时间:2012-05-02 09:33:08

标签: java swing jtable refresh defaulttablemodel

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

}

我可以创建一个'刷新按钮'并刷新值而不是?

3 个答案:

答案 0 :(得分:2)

您不必明确调用fireTableDataChanged();更新模型时,DefaultTableModel会自动执行此操作,如相关example

所示

答案 1 :(得分:2)

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

答案 2 :(得分:0)

  1. 我做了一个新项目,因为我选择了一个新框架,然后将一个表格,一个标签,一个文本字段和一个按钮从摇摆控件拖到你的框架上。
  2. 2.在后端创建一个表...

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

      1. 将其添加到项目库...
      2. 右键单击项目>属性>库>添加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;
        }
        }
        
        1. 使用以下代码

          调用页面中的函数
          con=new DBConnect();
          statement=con.getConnection().createStatement();
          
        2. 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.然后运行项目......

          您也可以按照本教程: -

          How to refresh JTable after insert delete or update the data in java Netbeans ID