在使用 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);
}
...
(假设已正确捕获异常并进行了所有必需的导入,并且图像存在且有效。)
以上代码没有显示文字;所发生的只是应用程序挂起,因为图像被下载并在几分之一秒后显示,这主要是预期的。在继续用图像替换它之前,如何强制 swing 更新 JLabel?或者,您是否知道一种不同的、更有效的方法来实现这一目标?
最佳答案
看看SwingWorker并在此处阅读有关 GUI/线程/后台线程的信息(不仅是我链接的第一页,还有以下页面)Event Dispatch Thread ;)
关于java - 强制 JLabel 在昂贵的操作之前显示文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6889121/