有没有办法告诉JTable的行过滤器它应该更新自己以显示过滤后的数据?我目前正在使用AbstractTableModel中的fireTableDataChanged方法,但该表的基础数据实际上并没有改变,所以这似乎可能是浪费。我的过滤器的工作方式是检查表中的数据是否在某个其他列表中,并且只有在该列表中才显示它。所以其他列表已更改,我需要告诉过滤器刷新自己。 fireTableDataChanged是否有正确的方法来执行此操作?
感谢, 杰夫
答案 0 :(得分:7)
fireTableDataChanged
这是一种正确的方法。
我会认为“其他列表”是您数据的一部分。这意味着它应该是您的表模型的一部分。因此,无论何时更改模型,都应调用fireTableDataChanged
。这样就可以了。
如果您无法将其作为模型的一部分,则至少应在发生更改时通知模型,然后模型将调用fireTableDataChanged
。对于通知,您可以使用标准侦听器方法,或者如果您更喜欢全局方法Event Bus framework可以提供帮助。