JTable行过滤器更新

时间:2010-03-24 22:12:30

标签: java swing filter jtable

有没有办法告诉JTable的行过滤器它应该更新自己以显示过滤后的数据?我目前正在使用AbstractTableModel中的fireTableDataChanged方法,但该表的基础数据实际上并没有改变,所以这似乎可能是浪费。我的过滤器的工作方式是检查表中的数据是否在某个其他列表中,并且只有在该列表中才显示它。所以其他列表已更改,我需要告诉过滤器刷新自己。 fireTableDataChanged是否有正确的方法来执行此操作?

感谢, 杰夫

1 个答案:

答案 0 :(得分:7)

fireTableDataChanged这是一种正确的方法。

我会认为“其他列表”是您数据的一部分。这意味着它应该是您的表模型的一部分。因此,无论何时更改模型,都应调用fireTableDataChanged。这样就可以了。

如果您无法将其作为模型的一部分,则至少应在发生更改时通知模型,然后模型将调用fireTableDataChanged。对于通知,您可以使用标准侦听器方法,或者如果您更喜欢全局方法Event Bus framework可以提供帮助。