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