2016-12-12 61 views
1

我從數據庫中選擇記錄,並在JTable中顯示一些空記錄隨着記錄,我無法使用表過濾記錄。如何刪除JTable Java中的空行

這裏有一些空的記錄,它是圖像Empty Records

public ArrayList<User> getUsers(){ 

    ArrayList<User> usersList=new ArrayList<User>(); 
    Connection connection=getConnection(); 
    String query="SELECT * FROM info"; 
    Statement myState; 
    ResultSet rs; 
    try{ 
    myState=connection.createStatement(); 
    rs=myState.executeQuery(query); 

    User user; 
    while(rs.next()){ 
      user=new User(rs.getInt("id"),rs.getString("fname"),rs.getString("lname"),rs.getInt("age")); 
      usersList.add(user); 
     } 
    } 
    catch(Exception ep){       
     ep.printStackTrace(); 
    } 
    return usersList; 
} 

我填充在JTable中這些記錄有該功能,下面給出英寸

public void ShowUsersinJTable(){ 


    ArrayList<User> uList=getUsers(); 
    DefaultTableModel model=(DefaultTableModel)jTable1.getModel(); 
    Object[] row=new Object[4]; 
    for(int i=0;i<uList.size();i++){ 


     row[0]=uList.get(i).getId(); 
     row[1]=uList.get(i).getFname(); 
     row[2]=uList.get(i).getLname(); 
     row[3]=uList.get(i).Age(); 
      model.addRow(row); 
    } 
} 
+0

所以你想只顯示多少行儘可能多的記錄你從數據庫? – XtremeBaumer

+0

我想顯示只在數據庫中的記錄。它也顯示了一些空的記錄 –

+0

你的方式似乎是正確的,我也做了類似的事情,除了事實之前,我添加新的內容之前清除表。也id嘗試初始化一個新的行對象每個新的記錄 – XtremeBaumer

回答

2

的代碼比較合適試着改變你的代碼如下:

ArrayList<User> uList=getUsers(); 
DefaultTableModel model=(DefaultTableModel)jTable1.getModel(); 
for(int i=0;i<uList.size();i++){ 
    Object[] row=new Object[4]; 

    row[0]=uList.get(i).getId(); 
    row[1]=uList.get(i).getFname(); 
    row[2]=uList.get(i).getLname(); 
    row[3]=uList.get(i).Age(); 
     model.addRow(row); 
} 

,你也可以填寫表格(只需要如果表中瀰漫着數據)

前刪除所有行
for (int i = table.getRowCount() - 1; i >= 0; i--) { 
    model.removeRow(i); 
} 

請告訴我它是否已經工作,所以如果需要,我可以幫助你進一步

+0

非常感謝removeRow(i);功能工作! –

+0

沒問題,歡迎您 – XtremeBaumer

+0

這裏有必要重新創建一個新的數組嗎?切勿像OP那樣嘗試它,但我猜JTableModel只是簡單地使用數組創建自己的單元格,而不保留數組的引用。但是這看起來更安全。 – AxelH