[英]Jtable retain column width
我有一個Jtable,我在其中使用setDataVector函數設置數據。它工作正常,但假設如果我只是通過使用鼠標拖動來更改了某些列寬,並且在同一表中加載了新數據之后,該列的寬度將重置到它的默認位置。所以基本上我想保留該寬度,即使加載新數據也是如此。
當您使用setDataVector()方法時,表的結構可能會更改,因此該表會自動重新創建TableColumnModel,並且您將丟失自定義設置。
首次創建JTable時,請使用如下代碼:
JTable table = new JTable(...);
table.setAutoCreateColumnsFromModel( false );
以防止重新創建TableColumnModel。
發生這種情況是因為當您根據文檔使用setDataVector()
來重新創建列並且列寬更改為默認值時。
嘗試使用setAutoCreateColumnsFromModel()
來防止該行為。
當您使用自定義表模型時。 不要使用setDateVector()來重新創建列。 您可以使用setPreferredWidth()方法手動管理列寬,如下所示:
table.setModel(buildTableModel(rs));
TableColumnModel tcm = table.getColumnModel();
tcm.getColumn(0).setPreferredWidth(80);
tcm.getColumn(1).setPreferredWidth(200);
tcm.getColumn(2).setPreferredWidth(100);
tcm.getColumn(3).setPreferredWidth(100);
tcm.getColumn(4).setPreferredWidth(100);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.