如何更改JLabel的图标?

我有一个jlabel来显示生成的图像。 但它只是第一次有效。 之后,jlabel的imageicon不会改变。 可能是什么问题呢?

很可能你有两个JLabel实例。 一个是类变量,一个是已添加到GUI的实例变量。 问题是你的代码正在更新类变量。

或者,如果您不更新EDT上的图标,可能会遇到问题。

编辑:重新阅读问题。 如果您正在谈论需要从文件重新加载的“生成的图像”,那么您需要摆脱缓存的图像。 两种方法:

// Using ImageIO String imageName = "timeLabel.jpg"; imageLabel.setIcon( new ImageIcon(ImageIO.read( new File(imageName) ) ) ); // Or you can flush the image String imageName = "timeLabel.jpg"; ImageIcon icon = new ImageIcon(imageName); icon.getImage().flush(); imageLabel.setIcon( icon ); 

如果您需要更多帮助,请发布您的SSCCE 。

我的第二个答案是,您可能有两个单独的标签对象。

另一种可能性是您有两个图标对象引用相同的图像,因此在标签上设置它似乎没有任何影响。

如果你有jlabel定义JLabel label = new JLabel();

我指的是用于显示图像的标签

在事件函数内部, 将其从中获取