java - 立即更改 JLabel

标签 java swing

我的应用程序由两个类文件组成,我们称它们为 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/

相关文章:

java - 运行错过的 Quartz 作业

java - 什么是 NullPointerException,我该如何解决?

ubuntu - Netbeans 7.3 在 ubuntu 上启动

java - 没有在 Java 中调用 paintComponents 方法

java - GUI 创建时程序不退出

java - 我们如何在 Liberty Server 中配置 DataSource 以实现 native 连接

java - 如何使 String 值调用 java 中特定的现有 JButton 变量名?

java - 需要在JTable中动态添加JCheckBox

java - TextField 中的负数错误

java - Kubernetes liveness - 使用 Spring Boot 为特定端点保留线程/内存