我正在編寫一個能夠處理頻繁更新的JTable。通常情況下,這個JTable有大約1000行數據,其中一些列會經常更新,因爲它們的值來自股票價格,這些價格在上市時間內移動很多。Java JTable頻繁更新?
我面臨的問題是,當大量行(例如80%)正在更新時,JTable會變得非常緩慢,持續20-30秒左右,其中探查器顯示EDT線程非常繁忙,處理tableChanged調用。
我嘗試通過 1)抑制fireTableCellUpdated 2)如果有< = 50行的變化,呼叫fireTableRowUpdate上各個行 3)摺疊的變化如果有> 50行的變化,要求fireTableDataChanged整個表。
它更好,但頻繁更新時仍然很慢,我的理解是fireTableDataChanged也很慢。因此,如果數據更新頻繁,fireTableDataChanged將被頻繁調用,並且GUI會感覺遲緩。
有人可以在這個問題上有經驗的人推薦使用fireTableRowsUpdate, fireTableDataChanged和fireTableStructureChanged來提高GUI的活力和性能的最佳實踐?如果你有解決這個問題的示例代碼的指針,它會更好。
非常感謝
安東尼硅
@Anthony Si:除了我的回答,我想指出,頻繁的事件不是唯一的問題。可怕的,非常慢的默認JTable/header/cells(再)繪畫表演是你遇到的問題的一個重要部分,這一切都在我給出的答案中解釋。 – SyntaxT3rr0r 2010-02-08 07:07:29