【发布时间】:2015-07-25 09:42:04
【问题描述】:
我为 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 不返回正在调整大小的列,而是返回最后点击的列
我想知道是否有更简单的方法可以即时调整大小,或者我的方法是否没有希望并且可以以某种方式修复。如果能得到任何提示,我将不胜感激。
【问题讨论】:
标签: jtable jpanel dynamic-resizing