2016-07-06 63 views
-2

正如你所看到的,當我嘗試一個新的項目得到了這樣的重複。我該怎麼辦?JTable - 顯示相同的項目

我寫了一個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(); 
    } 
+0

你應該編輯你的文章,並刪除圖像的鏈接,並將其包含在你的問題。也不要使用大寫的大寫字母,因爲它會讓閱讀變得困難。 – Andrej

+0

http://i.stack.imgur.com/UGWZE.png它的我的問題謝謝 –

+0

夥計plz讓我知道你不明白?我將盡力解釋 –

回答

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可能不再需要。

+0

謝謝,但在model = new DefaultTableModel()之後;這個jtable消失了。更改不會出現。 –

+0

我想你需要在開始添加新行之前清除舊行。這就是我試圖通過重新創建模型來實現的目標。但你也可以試試這個:while(model.getRowCount()> 0)model.removeRow(0);還要確保在開始插入新行之前將i設置爲零。 –

+0

只需使用'model.setRowCount(0)'從'DefaultTableModel'中刪除數據行。 – camickr