-1

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

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

但代码不会改变图像。函数的值确实发生了变化,但图片没有变化。例如:

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

图片总是'picture_1',但如果我第一次输入:

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

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

谢谢 :)

4

2 回答 2

1

想到了几个场景:

  • 您正在阻止 AWT 事件线程。(例如,您在一个长循环中调用 SetCover)
  • 您的参考lbl_cover没有指向您期望的实际标签。
于 2013-08-27T16:23:52.537 回答
0

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

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

于 2013-08-27T16:25:19.200 回答