2010-03-24 162 views
2

有沒有辦法告訴JTable的行過濾器,它應該自行更新以顯示過濾的數據?我目前在AbstractTableModel中使用fireTableDataChanged方法,但表格的底層數據實際上並沒有改變,所以這看起來可能是浪費。我的過濾器工作的方式是檢查表中的數據是否在其他列表中,並且只有在列表中顯示它。因此,其他列表發生了變化,我需要告訴過濾器自行刷新。是fireTableDataChanged做到這一點的正確方法?JTable行過濾器更新

感謝, 傑夫

回答

7

fireTableDataChanged是做它的正確道路。

我會認爲「其他列表」是您數據的一部分。這意味着它應該是你的表模型的一部分。所以無論什麼時候改變模型應該叫fireTableDataChanged。這將做到這一點。

如果您無法將其作爲您的模型的一部分,至少應該在發生更改時通知模型,然後模型將調用fireTableDataChanged。對於通知,您可以使用標準偵聽器方法,或者如果您更喜歡全局方法Event Bus framework可以提供幫助。

+0

很好的解釋,謝謝。 – 2010-03-24 23:48:28