2012-05-16 40 views
0

我有一个GUI和点击事件,我打电话数据库查询生成多个图表。在所有图表完成之前,我看不到任何图表,意味着在第一个图表完成并显示其内容之前,GUI组件会出现某些问题,它们会移至下一个图表。可能的原因是什么以及如何避免这种问题?的Java Swing - UI模块

+1

你能展示一些代码吗? – Jonas

回答

3

没有与该组件没有问题。您的设计存在问题。您正在执行长时间运行的查询以及在事件分派线程中运行的单个方法中图表的更新。通过这样做,EDT完全被阻塞,并且不能重新绘制任何东西,直到所有查询都已运行并且所有图表都已生成为止。

使用后台线程来执行查询,并生成图表,在EDT,每一个查询完成时间。 SwingWorker类有助于做到这一点。有关Swing中的并发性,请阅读its API docthe tutorial

+1

感谢您的评论。我有同样的感觉。请在下面找到我在做什么btnGenerateGraph.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0){//为MYSQL生成图形mysqlGrpahGenerator.generateMYSQLGraph(); luceneGraphGenerator.generateLuceneGraph();});你想让我在代码中改变的地方? – Jone

+1

那么,你已经阅读了javadoc和我链接的教程?如果没有,然后阅读它们。这里都有解释。如果你已经阅读过它们,然后重新阅读它们,因为你似乎没有理解他们解释的内容。 –

+0

好吧,我冲它,我知道是什么问题。现在我想在代码中进行更改,但我没有得到更新代码的位置。其实方法generateMYSQLGraph();生成8-10图,这就像我必须使用运行8-10次:( – Jone