Java Jtable在插入新数据后不会刷新

Java Jtable在插入新数据后不会刷新,java,swing,jtable,Java,Swing,Jtable,在这里,我试图从jtable搜索prodcuts。但问题是,新的搜索结果被添加到以前的搜索结果下,即使我使用了fireTableDataChanged方法,也没有更新jtable 这是我的密码 @Override public void actionPerformed(ActionEvent e) { System.out.println("Im in createIban with the values: " +comboBox.getSelected

在这里,我试图从jtable搜索prodcuts。但问题是,新的搜索结果被添加到以前的搜索结果下,即使我使用了fireTableDataChanged方法,也没有更新jtable

这是我的密码

    @Override
        public void actionPerformed(ActionEvent e) {


       System.out.println("Im in createIban with the values: " +comboBox.getSelectedItem()+ " and " + textField.getText());
      if(comboBox.getSelectedItem().toString().equals("Serial No"))
      {
            System.out.println("0");
           String cmb=textField.getText().toString();

 try{
      con=    (Connection) Connect.ConnectDB();

      String sql="select * from stocks where serial=?";
      pst =   (PreparedStatement) con.prepareStatement(sql);
      pst.setString(1, cmb);
      rs=pst.executeQuery();

      model = (DefaultTableModel) jt.getModel(); 

      model.fireTableDataChanged();            **//Here i used the method**


  while(rs.next()) {

            dt = rs.getString("date");
            mdt = rs.getString("mdate");
            srn = rs.getString("serial");
            mod = rs.getString("model");

            cap = rs.getString("capacity");
            inv = rs.getString("invoice");
            amt = rs.getString("amount");

            int i;
            for(i=0; i<model.getRowCount(); i++){
                {}
            }
          jt.repaint();
          model.fireTableDataChanged();       **//Here i used the method**
          model.addRow(new Object[]{i+1,mod,cap,dt,mdt,srn,inv,amt}); 


        JOptionPane.showMessageDialog(this,"Succesfully stored","User",JOptionPane.INFORMATION_MESSAGE);
            }
  }     catch (ClassNotFoundException ex) {
        Logger.getLogger(ViewStock.class.getName()).log(Level.SEVERE, null, ex);
    }   catch(SQLException ex){
       System.out.print(ex);

    }

我终于找到了一个解决方案,它将是非常有用的人谁寻求这种类型的问题的答案,所以我想在这里张贴我的代码

只需创建一个名为reset的方法 里面

  DefaultTableModel model;
  model = (DefaultTableModel) jtable1.getModel(); 

void reset()
 {
for(int i=model.getRowCount()-1; i>=0;i--)
{
    model.removeRow(i);
 }
 }

并且可以在任何地方调用此重置方法,使用简单代码都可以,祝您好运

您的ActionListener代码不应该调用model的fireTableDataChanged方法。相反,您的TableModel本身应该在其addRow中调用此方法。。。方法因为您使用的是DefaultTableModel,所以您知道它的addRow。。。方法已经做到了这一点,这表明您仍然需要进行一些调试,以找出为什么事情不起作用。因此您说DefaultTableModel不需要任何额外的方法来更新表?那么为什么我的表不会自动更新。我如何调试它。使用调试程序或日志来查看是否确实从数据库中提取了数据,以及数据是否已被提取实际上被添加到表模型中。确保您使用的是实际显示的JTable中的模型,而不是其他表格,。。。你还有更多的工作要做。此外,在这里发布代码时,请努力确保您的代码格式正确。你随意使用缩进使你很难完全理解你的代码。我认为你能比调试更好地帮助我。所以我将解释我的代码,这没什么..有一个jtable,其中包含产品详细信息数据库中的所有产品,和一个搜索按钮。当我按下搜索按钮时,一个带有组合框和文本字段的自定义对话框和一个提交按钮将出现,我的代码从这里开始,当我点击提交按钮。我自己,如果你能创建并发布一个或,一个最小的,即,非常小的程序,我们可以运行不变,并为我们显示你的错误,我会帮助你更好。