0

我为 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 不返回正在调整大小的列,而是最后一次单击的列

我想知道是否有更简单的方法可以即时调整大小,或者我的方法是否没有希望并且可以以某种方式修复。我会很感激我能得到的任何提示。

4

1 回答 1

0

最后,我想出了一个解决方案:

  • 在 Table 类中创建调整大小的方法:该方法获取表格每个列的宽度,并分别设置每个面板的宽度。
  • 将组件侦听器添加到 Table 类并在 componentResized 上调用该方法。

而已。

于 2015-07-31T07:38:44.460 回答