我为 JTable 创建了一个包含 JPanel 的附加标头。每个 JPanel 应与下面 JTable 的相应列一样宽。如果宽度是固定的,则此方法有效。但是,我希望 JTables 列可以通过动态调整 JPanel 宽度来调整大小。我不能让它工作。我目前的方法是扩展 DefaultTableColumnModel 覆盖 fireColumnMarginChanged 方法:
private class MyTableColumnModel extends DefaultTableColumnModel{
@Override
protected void fireColumnMarginChanged(){
header.setWidth(table.getSelectedColumn(),table.getSelectedColumn()).getWidth());
super.fireColumnMarginChanged();
}
}
“标题”有一个方法 setWidth(int column, int width)。但是这种方法存在几个问题:
fireColumnMarginChanged 在更改列宽度时一直被触发,而不是在设置最终宽度时被触发一次
table.getSelectedColumn 不返回正在调整大小的列,而是最后一次单击的列
我想知道是否有更简单的方法可以即时调整大小,或者我的方法是否没有希望并且可以以某种方式修复。我会很感激我能得到的任何提示。