[英]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.