在功能中更改JLabel中的图像

时间:2013-08-27 16:19:54

标签: java swing jlabel

我有功能SetCover(),在JLabel中设置图标。这是功能:

public void SetCover(String URL)
{
    ImageIcon image = new ImageIcon(URL);
    lbl_cover.setIcon(null);
    lbl_cover.setIcon(image);
    lbl_cover.revalidate();
}

但代码不会改变图像。函数的值确实会改变,但图片不会改变。对于exaple:

SetCover("C:\Picture_1")
SetCover("C:\Picture_2")

图片总是'picture_1',但如果我先输入:

SetCover("C:\Picture_2")
SetCover("C:\Picture_1")

比图片要2,所以它不会改变。知道这是怎么来的吗?有什么帮助吗?

谢谢:)

2 个答案:

答案 0 :(得分:1)

我想到了一些情景:

  • 您正在阻止AWT事件线程。 (例如,你在长循环中调用SetCover)
  • 您的参考lbl_cover并未指出您所感知的实际标签。

答案 1 :(得分:0)

在更改之前,您无需将ImageIcon设置为null。通常,您应该通过EDT(事件调度线程)更新swing组件,但在设置ImageIcon之后,请在repaint()之前JLabel revalidate()尝试。{/ p>

另外,请确保ImageIcon不为空;您的路径可能不存在。