javaswing-UI块

javaswing-UI块,java,swing,user-interface,concurrency,block,Java,Swing,User Interface,Concurrency,Block,我有一个GUI和点击事件,我调用数据库查询来生成多个图表。在所有图表完成之前,我无法看到任何图表,这意味着GUI组件存在一些问题,在第一个图表完成并显示其内容之前,它会移动到下一个图表。可能的原因是什么?如何避免此类问题 组件没有问题。你的设计有问题。您正在事件调度线程中运行的单个方法中执行长时间运行的查询和图表更新。通过这样做,EDT将被完全阻止,并且在所有查询运行完毕并生成所有图表之前无法重新绘制任何内容 每次完成一个查询时,使用后台线程在EDT中执行查询并生成图表。SwingWorker类

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

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


每次完成一个查询时,使用后台线程在EDT中执行查询并生成图表。SwingWorker类有助于做到这一点。阅读,了解Swing中的并发性。

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


每次完成一个查询时,使用后台线程在EDT中执行查询并生成图表。SwingWorker类有助于做到这一点。阅读并了解Swing中的并发性。

谢谢您的评论。我也有同样的感觉。请在下面找到我正在做的事情btnGenerateGraph.addActionListener(新建ActionListener(){public void actionPerformed(ActionEvent arg0){//为MYSQL生成图形mysqlGrpahGenerator.generateMYSQLGraph();luceneGraphGenerator.generateLuceNeucenegraphGenerator();});你想让我在代码中修改什么?那么,你已经阅读了javadoc和我链接到的教程?如果没有,那么就阅读它们。它们都在那里解释。如果你已经阅读了它们,那么就重新阅读它们,因为你似乎不明白它们解释了什么。好吧,我已经阅读了它,我知道了问题所在。现在我想在我的代码,但我不知道应该在哪里更新代码。实际上,方法generateMYSQLGraph();生成8-10个图形,就像我必须使用run 8-10次一样:(查看SwingWorker类谢谢你的评论。我也有同样的感觉。请在下面找到我正在做的btnGenerateGraph.addActionListener(new ActionListener()){public void actionPerformed(ActionEvent arg0){//为MYSQL生成图形mysqlGrpahGenerator.generateMYSQLGraph();luceneGraphGenerator.generateLuceReceneGraph();});你想让我在代码中修改什么?那么,你已经阅读了javadoc和我链接到的教程?如果没有,那么就阅读它们。它们都在那里解释。如果你已经阅读了它们,那么就重新阅读它们,因为你似乎不明白它们解释了什么。好吧,我已经阅读了它,我知道了问题所在。现在我想在我的代码,但我不知道应该在哪里更新代码。实际上,方法generateMYSQLGraph();生成8-10个图形,就像我必须使用run 8-10次一样:(看看SwingWorker类