立即更改JLabel

时间:2011-10-22 22:43:34

标签: java swing

我的应用程序由两个类文件组成,我们将它们称为A和B.A是主要文件 - 执行的文件和jar文件的主类。在A中我定义了一个JFrame,我向其添加了两个JPanel:其中一个由JButtons和JLabel组成,另一个是图形的,并在B(B extends JPanel)中实现。

在B中我有一个方法可能需要一段时间,所以我希望向用户提供有关正在进行的过程的信息;也就是说,我想告诉用户剩下多少计算量。我想通过更新A类中的JLabel来做到这一点。但是,当我尝试它时,我得到JLabel只在方法完成后更新,即不是看到它从0%运行到100%我只看到100%,一直。

我认为我没有任何相关的代码片段可以告诉您,但如果有什么要求我发布的内容,请告诉我。

我已经检查了类似的问题,但在我看来,他们问了一些截然不同的问题。

谢谢,

罗恩。

1 个答案:

答案 0 :(得分:5)

你的是一个线程问题。您长时间运行的进程占用主Swing线程EDT,阻止任何绘图,组件更新或用户交互。您需要在后台线程中执行长时间运行的进程,例如SwingWorker对象提供的进程。这样做,您的GUI将变得更加响应。

有关此重要主题的详情,请查看Concurrency in Swing

如果您需要更多具体帮助,则需要提供更多信息和代码。