簡體   English   中英

在JLabel中刷新相同的圖像

[英]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(); 有人知道嗎?

你也可以注意到

  1. ImageIO有點慢
  2. img.getImage().flush(); 調用它會閃爍圖像
  3. 但是如果每次我都有不同的文件名,則無需調用img.getImage().flush(); 只繼續jlabel.setIcon(img); 並且圖像沒有閃爍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM