0

我有一个 GUI,在点击事件时,我正在调用数据库查询来生成多个图表。在完成所有图表之前,我看不到任何图表,这意味着 GUI 组件存在一些问题,在第一个图表完成并显示其内容之前,它会移动到下一个图表。可能的原因是什么以及如何避免此类问题?

4

1 回答 1

3

组件没有问题。你的设计有问题。您正在事件调度线程中运行的单个方法中执行长时间运行的查询和图表更新。通过这样做,EDT 将被完全阻塞,并且在所有查询都已运行并生成所有图表之前无法重新绘制任何内容。

每次完成一个查询时,使用后台线程执行查询,并在 EDT 中生成一个图表。SwingWorker 类有助于做到这一点。阅读它的 API 文档,以及关于 Swing 中并发的教程。

于 2012-05-16T07:22:21.087 回答