我有一个Jtable,其中我使用setDataVector函数设置数据。它工作正常,但假设我只是通过使用鼠标拖动更改了一些列宽,然后在同一个表中加载新数据然后宽度该列重置为它的默认位置。所以基本上我想保留该宽度,即使新数据加载。
答案 0 :(得分:6)
当您使用setDataVector()方法时,表的结构可能会更改,因此表会自动重新创建TableColumnModel,您将失去自定义。
第一次创建JTable时,请使用以下代码:
JTable table = new JTable(...);
table.setAutoCreateColumnsFromModel( false );
以防止重新创建TableColumnModel。
答案 1 :(得分:1)
这种情况会发生,因为根据重新创建列的文档使用setDataVector()
时,您的列宽会更改为默认值。
尝试使用setAutoCreateColumnsFromModel()
来阻止这种行为。
答案 2 :(得分: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);