我正在编写一个能够处理频繁更新的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