[英]Refresh Same Image in a JLabel
我正在尝试显示一段时间后其内容已更改的图像。 我正在JLabel
显示它,但是问题是当我重新加载该图像时,它在JLabel
没有改变,好像JLabel#setIcon(new ImageIcon("myImagePath.png"));
将图像缓存在内存中,当我更改图像时,它会寻找名称并且没有从硬盘加载它。
即使我使用两个图像来翻转其数据内容已更改的图像? 有人知道该如何解决吗? 但是每次加载不同名称的图像都可以吗?
行创建问题:例如,我的图像在单击按钮事件时发生了变化
jlabel.setIcon("d:\\img.png");
jlabel.repaint();
我已经通过使用ImageIO解决了问题
try {
BufferedImage bufImg=ImageIO.read(new File("d:\\img.png"));
jlabel.setIcon(new ImageIcon(bufImg));
//jlabel.repaint();
//works even without repaint
}
catch (IOException ex) {
System.out.println("Unable to read image file");
}
谢谢nIcE cOw同时使用mKorbel的答案
ImageIcon img=new ImageIcon("D:\\img.png");
img.getImage().flush();
jlabel.setIcon(img);
但是如果我不调用img#getImage()#flush();
不知道setIcon()
有什么问题img#getImage()#flush();
。 有人知道吗?
你也可以注意到
ImageIO
有点慢 img.getImage().flush();
调用它会闪烁图像 img.getImage().flush();
只继续jlabel.setIcon(img);
并且图像没有闪烁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.