2011-05-13 70 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; 
    } 

很显然,你需要改变模型和数据插入到任何你正在使用。