JTable:根据外部输入更改列

时间:2016-07-05 17:17:56

标签: java swing resize jtable tablecolumn

我有一个扩展JTable的自定义表类。我希望根据复选框使列可见/不可见。我在复选框上有一个actionlistener,用于更改操作中列的最大,最小和首选宽度。

如果未选中该复选框,则我将最小/最大/首选宽度设置为0.选中此选项后,我将最小/最大/首选宽度设置为正常大小。

我的问题是,当我点击选中复选框时,表格不会改变。我没看到专栏。但是,当我调整应用程序或任何表列的大小时,表格会更新,我的新列现在可以正常显示。

我尝试调用" table.repaint()",但没有做任何事情。我现在理想的方法是找出导致更新的应用程序/列调整大小期间调用的内容,然后从我的监听器调用它。

1 个答案:

答案 0 :(得分:3)

  

我在复选框上有一个actionlistener,用于更改操作中列的最大,最小和首选宽度。

不要使用列大小。该列仍然是表的一部分,并且会因用户在列与列之间的选项卡而混淆用户,因为光标将在最小化列上消失。

而是要从表的视图中删除列。因此,您需要从表格的TableColumn中删除TableColumnModel

查看Table Column Manager。这允许您根据需要隐藏/显示列。