java - 如何在运行时在 swing 应用程序中更改 jlabel 文本/颜色

标签 java swing runtime jlabel event-dispatch-thread

我正在开发一个项目,点击按钮即可完成三项任务,这需要大约时间。 2-3 分钟我正在使用下面的代码更改 jLabel 的文本

lblStatus.setText( "Phase1 done successfully !!!, Phase2 started " );

但我只得到“所有阶段都成功完成!!!”所有运行完成后 jLabel 中的文本。

最佳答案

如果您在 EDT 中运行长时间运行的任务,UI 将卡住,直到您的任务完成。因此,您应该在后台线程中执行长时间运行的任务。在后台线程中,您可以使用 SwingUtilties.invokeLater() 来更新 UI。 示例:

SwingUtilities.invokeLater(new Runnable() {
  @Override
  public void run() {
    lblStatus.setText( "Phase1 done successfully !!!, Phase2 started " );
}});

有关更多信息,请参阅SwingUtilities.invokeLater() why is it needed?

关于java - 如何在运行时在 swing 应用程序中更改 jlabel 文本/颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39915701/

相关文章:

java - 如何保持 gradle 依赖项 Intent 特定

java - 如何从外部访问 docker 中的 JMX 接口(interface)?

java - Hibernate @ManyToMany 仅使用所属表中的 FK 来删除连接表中的条目

java - 如何直接从protobuf创建GRPC客户端而不将其编译成java代码

java - 按下按钮时运行线程

java - 需要关于如何在面板上方插入小文本短语的想法

java - JComboBox 的 KeyListeners,用作表中的单元格编辑器

c - 运行时错误 - C 编程

assembly - 二进制如何转换为硬件?

algorithm - 设计数据结构就像改进堆栈一样