JTable尊重用户调整列的大小 - 直到添加新行

时间:2014-02-12 23:38:31

标签: java swing jtable

我的JTable设置为:

  theTable.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);

当用户调整列的宽度时,它会考虑该宽度,直到将新行添加到表中。此时,所有列都恢复为原始宽度。

在调试器中,当用户调整宽度并且preferredWidthminWidth设置为适当的值时,列的maxWidth会发生变化。在添加新行之后的某个时刻,preferredWidth将恢复为最初绘制表时使用的值。

如何在添加新行后让表格尊重用户调整的列宽?

1 个答案:

答案 0 :(得分:2)

主要原因JTable将重置表列是因为它认为表的基础结构已更改。

当表格模型更改(JTable#setModel)或列模型已更改(JTable#setColumnModel)或您从tableStructureChanged内调用TableModel时,可能会导致此问题从AbstractTableModel延伸或以其他方式导致TableModelEvent.HEADER_ROW事件被触发......

当然,这都是没有MCVE

的学术界人士