Java JTable-显示相同的项目

Java JTable-显示相同的项目,java,swing,jtable,awt,Java,Swing,Jtable,Awt,正如你所看到的,当我尝试一个新的项目得到了这样的重复。我该怎么办 我写了一个JTableredisplayer类。所以有一个添加按钮到表中。单击该按钮时,它应为exp I added 1。在我添加2之后。应仅显示1 2。不是那样的 jTable1.removeAll(); jTable1.revalidate(); try{ Class.forName("com.mysql.jdbc.Driver"); } catch(Cl

正如你所看到的,当我尝试一个新的项目得到了这样的重复。我该怎么办

我写了一个
JTable
redisplayer类。所以有一个添加按钮到表中。单击该按钮时,它应为exp I added 1。在我添加2之后。应仅显示1 2。不是那样的

     jTable1.removeAll();
     jTable1.revalidate();
     try{
          Class.forName("com.mysql.jdbc.Driver");
     }
     catch(ClassNotFoundException e){
          System.err.println("Driver yok");
            return;
     }
     Connection con=null;
         try{
         con=DriverManager.getConnection("jdbc:mysql://localhost:3306/kutuphane","root","");
         System.out.println("Veritabnı baglandıldı");
         Statement stmt=con.createStatement();
         ResultSet rs=stmt.executeQuery("SELECT * FROM kisiler ");

     while(rs.next()){
         model=(DefaultTableModel) jTable1.getModel();
         model.insertRow(i,new Object[]{rs.getString("ADSOYAD"),rs.getInt("TELEFON"),rs.getInt("TCNO"),rs.getString("ADRES")   } );
         i++;   
     }
      jTable1.setModel(model);
      jTable1.revalidate();

      stmt.close();
      rs.close();
    }
     catch(SQLException e){
     System.out.println("Veritabanı baglanmadi");
     e.printStackTrace();
    }
     finally{
        if(con!=null)
        try{
            con.close();
    }
     catch(SQLException e){
          e.printStackTrace();
    }

首先,去掉代码顶部的这一行

jTable1.removeAll();    //DELETE THIS LINE!!
您可能希望它删除表模型中的所有行,但实际情况并非如此

接下来,将
while
循环及其后面的两行替换为:

model = new DefaultTableModel();
while(rs.next()){
     model.addRow(new Object[]{
        rs.getString("ADSOYAD"),
        rs.getInt("TELEFON"),
        rs.getInt("TCNO"),
        rs.getString("ADRES")}
     );   
 }
 jTable1.setModel(model);

请注意,我使用的是
addRow
而不是
insertRow
,因此可能不再需要
I

您应该编辑您的帖子,删除指向图像的链接,并将其包含在问题中。也不要使用太多的大写字母,因为这会使阅读变得困难。这是我的问题,谢谢。请让我知道你不明白什么?我将尝试精确解释不要在while循环中初始化
模型,它将创建新模型,直到
rs。next()
有效。首先,您应该停止像我们一样叫喊。谢谢,但在model=new DefaultTableModel()之后;此jtable将消失。更改不会出现。我认为您需要在开始添加新行之前清除旧行。这就是我试图通过重新创建模型来实现的目标。但是您也可以尝试这样做:while(model.getRowCount()>0)model.removeRow(0);在开始插入新行之前,请确保将i设置为零。只需使用
model.setRowCount(0)
DefaultTableModel
中删除数据行即可。