2011-05-13 71 views
6

我在JScrollPane中放置了一個JTable,但該表只包含多行,這使得窗格中剩餘的空間只是空的。如何用空的JTable行填充JScrollPane的高度?

有沒有什麼辦法可以讓JTable填滿整個窗格?比方說,放空行,以便窗格將被填充。

感謝

回答

10
table.setFillsViewportHeight(true); 
+0

據我所知,這將只填充表背景顏色的視口,而不是空行 - 猜猜這取決於需要什麼。就我個人而言,我認爲我更喜歡這個樣子。 – 2011-05-16 15:43:27

+0

是的,這就是想法。對我來說添加額外的行是沒有意義的,因爲那樣你的模型就不準確了,因爲它包含了不包含任何數據的填充行。 – camickr 2011-05-16 16:28:36

1

我不知道這是否是最好的方式,但它應該很好地工作:

int rows = jTable1.getRowCount(); 
    int rowHeight = jTable1.getRowHeight(); 
    int tableHeight = jTable1.getTableHeader().getHeight()+(rows*rowHeight); 
    System.out.println("JScrollpane: "+jScrollPane1.getViewport().getHeight()); 
    while(tableHeight<jScrollPane1.getViewport().getHeight()){ 
     System.out.println("JTable: "+tableHeight); 
     ((DefaultTableModel) jTable1.getModel()).addRow(new Object[]{null,null,null,null}); 
     tableHeight+=rowHeight; 
    } 

很顯然,你需要改變模型和數據插入到任何你正在使用。