gpt4 book ai didi

更新频繁的 Java JTable?

转载 作者:行者123 更新时间:2023-12-03 23:05:19 25 4
gpt4 key购买 nike

我正在编写一个能够处理频繁更新的 JTable。通常这个 JTable 有大约 1000 行数据,并且一些列会经常更新,因为它们的值是从股票价格派生的,股票价格在市场时间波动很大。

我面临的问题是,当大量行(例如 80%)正在更新时,JTable 在 20-30 秒左右变得非常慢,探查器显示 EDT 线程非常忙,处理tableChanged 调用。

我尝试通过以下方式折叠更改1) 抑制 fireTableCellUpdated2) 如果有 <= 50 行更改,则在各个行上调用 fireTableRowUpdate3) 如果有 > 50 行的更改,则为整个表调用 fireTableDataChanged。

好多了,但是频繁更新的时候还是很慢,我的理解是fireTableDataChanged也很慢。所以如果数据更新足够频繁,fireTableDataChanged 会被频繁调用,GUI 会感觉卡顿。

有这方面经验的人可以推荐使用 fireTableRowsUpdate 的最佳实践吗?fireTableDataChanged 和 fireTableStructureChanged 以提高 GUI 的活力和性能?如果您有指向解决此问题的示例代码的指针,那就更好了。

非常感谢

安东尼·斯

最佳答案

我已经做到了,事实上,即使在强大的设置中,默认的 JTable 性能也非常糟糕。但所有的希望都没有消失:使用(相当)一些技巧你可以获得可接受的性能。

基本上,Oracle 有一个专门用于此目的的教程,称为“圣诞树”。

在这里,“如何创建性能良好的频繁更新的 JTable”:

http://www.oracle.com/technetwork/java/christmastree-138396.html

我发现真正令人惊奇的一件事是不断显示使用的内存:您可能想要这样做。

您会惊讶于默认的 JTable 生成了多少不必要的废话,这会减慢一切,当然还会使 GC 触发的频率超出应有的频率。

然后开始实现我提供给您的链接中给出的所有技巧,您会发现一切都将运行得很多更顺畅。我现在正在运行非常复杂且“不断更新”的 JTable,现在一切都很好 :)

但是,是的,除了最简单的情况和少量数据之外,默认的 JTable 实现真的非常糟糕。

关于更新频繁的 Java JTable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2219988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com