【问题标题】:Align JPanels with JTable columns将 JPanel 与 JTable 列对齐
【发布时间】: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


    【解决方案1】:

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

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

    就是这样。

    【讨论】:

      猜你喜欢
      • 2011-05-13
      • 2012-01-04
      • 2015-10-02
      • 2013-09-26
      • 1970-01-01
      • 2014-09-17
      • 2012-01-24
      • 2015-07-06
      • 1970-01-01
      相关资源
      最近更新 更多