java - PaintComponent 花费很长时间,占用了 Swing 事件调度线程

标签 java performance swing jpanel

我定制了一个 JPanel,它显示一个大而复杂的图表。根据数据的大小,在 PaintComponent() 中渲染可能需要几分钟的时间。我正在寻找一种策略来:

  • 绘制组件而不占用事件调度线程。
  • 在 JPanel 中绘制一些内容,让用户知道图像正在渲染。
  • 定期更新另一个容器的标签以显示进度

我对此进行了一些研究,我想知道是否正确的策略是使用 SwingWorker 创建后台线程并绘制到 BufferedImage。计时器将处理状态更新。类成员变量将保存状态。

我走在正确的道路上吗?

最佳答案

您需要考虑使用SwingWorker 。您应该在单独的线程中渲染图表。 SwingWorker 将帮助实现这一目标。

为了开始并发多线程,sun 有一个 great tutorial这应该会非常有帮助。

关于java - PaintComponent 花费很长时间,占用了 Swing 事件调度线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1063528/

相关文章:

java - 如何在 apache beam 中的 ParDo 函数中处理 PCollection<KV<String,String>> 中的元素时将元素发布到 kafka 主题?

python - 确保 python 脚本仍在运行

mysql - 索引如何让速度快?

javascript - 为特定 div 设置背景颜色的最佳方法

java - 如何将 JMenuItem 对齐更改为右对齐

java - 我是否应该使用布局管理器,即使它看起来没有必要?

java - Jena:如何从模型中查询数据?

java - 是否可以只在同一个包和子包中访问一个接口(interface)?

java - JPA 试图强制我拥有一个名为 'id' 的属性和数据库列

Java - 禁用的 JButton 上的图标/图像是灰色的