JTable - 显示相同的项目

时间:2016-07-06 11:31:23

标签: java swing jtable awt

正如你所看到的那样,我尝试新项目的时候就像重复一样。我该怎么办?

我写了一个JTable redisplayer类。所以有一个表的添加按钮。当点击那个按钮时它应该是exp我添加1.我添加2.应该只显示1 2。不是1 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();
    }

1 个答案:

答案 0 :(得分:1)

首先,摆脱代码顶部的这一行

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