【发布时间】:2016-11-07 15:01:50
【问题描述】:
我有一个扩展 JTable 的自定义表格类。我希望基于复选框的列可见/不可见。我在复选框上有一个动作监听器,可以更改正在运行的列的最大、最小和首选宽度。
当复选框未被选中时,我将最小/最大/首选宽度设置为 0。当它被选中时,我将最小/最大/首选宽度设置为正常大小。
我的问题是,当我单击选中复选框时,表格没有改变。我没有看到专栏。但是,当我调整应用程序或任何表格列的大小时,表格会更新并且我的新列现在可以正常显示。
我尝试调用“table.repaint()”,但没有任何效果。我现在理想的方法是找出导致更新的应用程序/列调整大小期间调用的内容,然后从我的侦听器中调用它。
【问题讨论】:
-
发布minimal reproducible example,以便我们了解您的所作所为
-
与其更改 view,不如考虑在 Model 上进行更改 - 您可以通过创建两个 TableModel 来实现,每个类型一个,然后相应地更改 JTable 模型
-
when I resize the application or any of table columns, the table gets updated and my new column is now visible properly.你需要让 LayoutManager 知道发生了变化。尝试致电revalidate,但请考虑我上面评论中的替代方案
标签: java swing resize jtable tablecolumn