2014-01-13 157 views
1

我有一個Jtable,其中我使用setDataVector函數設置數據。它工作正常,但假設如果我只是通過使用鼠標拖動並在新的數據加載後在同一個表中更改了一些列寬度那麼該列的寬度重置爲默認位置。因此,即使新數據加載,基本上我仍想保留該寬度。Jtable保留列寬

+0

我使用一個自定義的TableModel – avinash

回答

6

當您使用setDataVector()方法時,表的結構可能會更改,因此表會自動重新創建TableColumnModel,並且您失去了自定義。

當您創建JTable中第一次使用這樣的代碼:

JTable table = new JTable(...); 
table.setAutoCreateColumnsFromModel(false); 

防止TableColumnModel中被重建。

+0

感謝您的幫助,我曾嘗試使用setAutoCreateColumnsFromModel(),但我得到一個這種變化後,空白table.Also我使用Jtable的自定義表模型。 – avinash

+0

@avinash,'我得到一個空白表。'它是一個簡單的解決方案,但由於你還沒有接受任何你以前的任何問題的答案,我不會花時間幫助那些不理解幫幫我。 – camickr

+0

哦對不起,我沒有意識到這個「接受答案」的事情。我將在未來嘗試照顧這一點。 – avinash

0

當您使用自定義表模型。不要使用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);