Java 更改ColumnModel后,如何在JTable中重新创建列的宽度

Java 更改ColumnModel后,如何在JTable中重新创建列的宽度,java,swing,jtable,Java,Swing,Jtable,所以我有一个24列的JTable。初始化表时,我设置了列的宽度,用户界面看起来很棒。没有抱怨。用户可以单击按钮仅查看其中4列。我更改表模型上的列数组,然后调用 firetablestructurechanged() 然后删除我建立的所有列宽(但现在只显示4列,即预期的行为)。当我尝试重新定义列宽时,似乎没有什么变化 这是我用来设置列宽的 TableColumnModel columnModel = table.getColumnModel(); for (int i = 1; i < c

所以我有一个24列的JTable。初始化表时,我设置了列的宽度,用户界面看起来很棒。没有抱怨。用户可以单击按钮仅查看其中4列。我更改表模型上的列数组,然后调用

firetablestructurechanged()
然后删除我建立的所有列宽(但现在只显示4列,即预期的行为)。当我尝试重新定义列宽时,似乎没有什么变化

这是我用来设置列宽的

TableColumnModel columnModel = table.getColumnModel();
for (int i = 1; i < columnModel.getColumnCount(); i++) {
columnModel.getColumn(i).setMinWidth(50);
columnModel.getColumn(i).setMaxWidth(50);
}
TableColumnModel columnModel=table.getColumnModel();
对于(int i=1;i

调用firetablestructurechanged()后,如何调整列的大小?

一种方法是提供自定义的
TableColumnModel
,它可以“隐藏”和“显示”列。有点过时了,但基本前提是合理的…只是一个建议,您可以使用它允许用户切换列吗?我认为您的问题将很容易解决,用户体验将得到极大改善,不仅是因为此功能,还因为该库中添加了其他功能(即:在表中搜索的能力),更不用说列仍然可以调整大小,而且您不必浪费时间处理固定大小的问题。显示如何隐藏JTable的列。无需定制
ColumnTableModel
。您只需从默认的
TableColumnModel
中删除列,这不会从
TableModel
中删除列,因此您不需要调用
fireTableStructureChanged()