我遇到一個問題,我有一個JTable佈局使用的GridBagLayout管理器和表中的行是不固定的數量。我打算填充指定給表格的空間及其所有單元格,但表格的最後一行與容器中的下一個組件之間存在大的空白(和白色)空間。動態改變JTable中單元格的高度與GridBagLayout的
作爲潛在的解決方案,我不知道是否可以調整單元格的高度,以填補分配給該表的空間。例如,如果有三排,那麼空間的高度應該平均分爲三排。如果只有一行,那麼這行應占用整個可用空間。
任何建議,歡迎,如果有更好的方式來達到預期的效果,請賜教。謝謝。
P.S.我在JPanel中使用JTable而不是JScrollPane,如果這有什麼區別的話。
編輯:所以我嘗試下面的代碼,這當然調整根據目前的行數行的高度,但最後一行之後,下一個組件之前,它仍然留下一個空白空間。想知道爲什麼?
// re-size the header and row height to fill the whole tPanel
int panelHeight = tPanel.getHeight();
int desiredRowHeight = panelHeight/(numOfRows + 1);
friendsInfo.getTableHeader().setPreferredSize(new Dimension(table.getColumnModel().getTotalColumnWidth(), desiredRowHeight));
table.setRowHeight(desiredRowHeight);
謝謝博羅,所以我試着打電話jPanel.getHeight(),但它返回0,所以我不能進行下一個步驟......有什麼理由? – skyork 2011-05-05 20:47:15
@skyork它可能會返回零,但在開始,因爲它沒有放在父組件。但您可以在開始時調用[panel.getPreferredSize().getHeight()](http://download.oracle.com/javase/1.5.0/docs/api/javax/swing/JComponent.html#getPreferredSize()) 。之後,您應該使用[getHeight()](http://download.oracle.com/javase/1.5.0/docs/api/javax/swing/JComponent.html#getHeight()),因爲您在當前大小之後。如果它仍然模糊,請在Java文檔中檢查這些方法的描述。 – Boro 2011-05-05 20:58:40
@skyork(http://stackoverflow.com/questions/5840075/java-jscrollpane-multiple-components/5842383#5842383)使用了setPreferredSize()的示例]你可能需要在開始強迫你的面板要更大一些,然後其子女的首選大小。我在哪裏使用它來使滾動窗格有意地變小,以便顯示滾動條。 – Boro 2011-05-05 21:03:16