【问题标题】:Forcing JLabel to display text before expensive operation在昂贵的操作之前强制 JLabel 显示文本
【发布时间】:2011-07-31 11:17:07
【问题描述】:

在使用 ImageIcon 更新之前,我无法让 JLabel 立即显示文本。

我有一个固定大小的 JLabel,它将显示完美适合它的文本或图像。我试图让它显示文本“正在加载...”,然后立即让它从 URL 加载图像并用它替换文本。

...

public void setImage()
{
   URL url = new URL("http://www.website.com/pathtoimage/image.png");

   jLabel1.setIcon(null);
   jLabel1.setText("Loading...");

   ImageIcon ii = new ImageIcon(url);
   jLabel1.setIcon(ii);
}

...

(假设异常被正确捕获并进行了所有必需的导入,并且图像存在且有效。)

以上代码不显示文字;所发生的只是应用程序挂起,因为图像在几分之一秒后被下载并显示,大部分与预期的一样。在继续用图像替换它之前,如何强制摇摆更新 JLabel?或者,您知道实现这一目标的其他更有效的方法吗?

【问题讨论】:

    标签: java swing event-dispatch-thread concurrency


    【解决方案1】:

    查看SwingWorker 并在此处阅读有关 GUI/线程/后台线程的信息(不仅是我链接的第一页,还包括以下页面)Event Dispatch Thread ;)

    【讨论】:

    • 这是首选的解决方案。 1+
    猜你喜欢
    • 1970-01-01
    • 2011-03-21
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多