設定的指令很簡單,就是使用 setPreferredSize 函數。 

JTable.getTableHeader().setPreferredSize(new Dimension(0, 50));

上述的函數在一般 JTable 使用沒有問題,但是如果使用 JTable.setAutoResizeMode (JTable.AUTO_RESIZE_OFF);,則會造成 TableHeader 不會隨著 Scroll Bar 移動。主要原因是 TableHeader width 被設成 0,所以必須設定正確的 width 就沒有問題了。

JTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); JTable.getTableHeader().setPreferredSize( new Dimension(JTable.getColumnModel().getTotalColumnWidth(), 50));

上述函數在一般狀況是沒有問題的,但是如果有使用者去更動 column width 時,就會發現最後的欄位有問題。總而言知,還是因為 TableHeader width 的問題。最後只好靠著修正 DefaultTableCellHeaderRenderer,才能真正改動 header height。

JTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); JLabel tmp = (JLabel)JTable.getTableHeader().getDefaultRenderer(); tmp.setPreferredSize(new Dimension(0, 50));

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()