我有一个扩展JTable的自定义表类。我希望根据复选框使列可见/不可见。我在复选框上有一个actionlistener,用于更改操作中列的最大,最小和首选宽度。
如果未选中该复选框,则我将最小/最大/首选宽度设置为0.选中此选项后,我将最小/最大/首选宽度设置为正常大小。
我的问题是,当我点击选中复选框时,表格不会改变。我没看到专栏。但是,当我调整应用程序或任何表列的大小时,表格会更新,我的新列现在可以正常显示。
我尝试调用" table.repaint()",但没有做任何事情。我现在理想的方法是找出导致更新的应用程序/列调整大小期间调用的内容,然后从我的监听器调用它。
答案 0 :(得分:3)
我在复选框上有一个actionlistener,用于更改操作中列的最大,最小和首选宽度。
不要使用列大小。该列仍然是表的一部分,并且会因用户在列与列之间的选项卡而混淆用户,因为光标将在最小化列上消失。
而是要从表的视图中删除列。因此,您需要从表格的TableColumn
中删除TableColumnModel
。
查看Table Column Manager。这允许您根据需要隐藏/显示列。