我的应用程序由两个类文件组成,我们称它们为 A 和 B。A 是主要的 - 执行的文件和 jar 文件的主类。在 A 中,我定义了一个 JFrame,向其中添加了两个 JPanel:其中一个由 JButton 和 JLabels 组成,另一个是图形面板,并在 B 中实现(B extends JPanel
)。
在 B 中,我有一个可能需要一段时间的方法,因此我希望向用户提供有关该过程的信息;也就是说,我想告诉用户还剩下多少计算量。我想通过更新 A 类中的 JLabel 来完成此操作。但是,当我尝试时,我发现 JLabel 仅在该方法完成后才更新,即我只看到它从 0% 运行到 100% 100%,始终如此。
我认为我没有任何相关的代码片段可以向您展示,但如果您希望我发布一些内容,请告诉我。
我检查过类似的问题,但在我看来,他们问了一些完全不同的问题。
谢谢,
罗恩。
最佳答案
你的问题是线程问题。您的长时间运行的进程正在占用主 Swing 线程(EDT),从而阻止任何绘制、组件更新或用户交互。您需要在后台线程(例如由 SwingWorker 对象提供的线程)中执行长时间运行的进程。这样做,你的 GUI 将变得更加灵敏。
查看Concurrency in Swing了解有关这个重要主题的更多信息。
如果您需要更具体的帮助,您将需要提供更多信息和代码。
关于java - 立即更改 JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7863111/