a q*_*ion 1 java swing jlabel imageicon
我试图显示一段时间后内容发生变化的图像.我正在显示它JLabel,但问题是当我重新加载这个图像它没有改变,JLabel因为似乎JLabel#setIcon(new ImageIcon("myImagePath.png"));缓存图像在内存中,当我改变它,它寻找名称,并没有从硬盘加载它.
即使我使用两个图像来翻转其数据内容是否已更改?谁知道如何解决这个问题?但每次加载不同名称的图像都可以正常工作?
创建问题的行: 例如我的图像在按钮单击事件上更改
jlabel.setIcon("d:\\img.png");
jlabel.repaint();
Run Code Online (Sandbox Code Playgroud)
我已经使用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");
}
Run Code Online (Sandbox Code Playgroud)
感谢漂亮的母牛也有工作mKorbel的回答为
ImageIcon img=new ImageIcon("D:\\img.png");
img.getImage().flush();
jlabel.setIcon(img);
Run Code Online (Sandbox Code Playgroud)
但setIcon()如果我不打电话,不知道有什么问题img#getImage()#flush();.谁知道?
你也可以注意到
ImageIO 某种程度上很慢img.getImage().flush(); 调用它会闪烁图像img.getImage().flush();只去上jlabel.setIcon(img);和图像不闪烁.| 归档时间: |
|
| 查看次数: |
4741 次 |
| 最近记录: |