2014-09-19 111 views
0

因此每2秒就會覆蓋文件image.png。我想要一個applet在瀏覽器中顯示圖像。它確實顯示圖像,但問題是圖像文件在計算機上更新後,圖像永遠不會在小程序中更新。我究竟做錯了什麼?圖像在刷新時不更新

import java.awt.*; 
import java.util.Timer; 
import java.util.TimerTask; 

import javax.swing.JApplet; 

public class ImageUpdate extends JApplet { 

    Image picture; 
    Timer timer = new Timer(); 
    int delay = 2000; //2 second 
    int period = 4000; //4 seconds 

    public void init() { 
    picture = getImage(getDocumentBase(),"image.png"); 

    timer.scheduleAtFixedRate(new TimerTask() { 
      public void run() { 

      repaint(); 

       System.out.println("image updated"); 
      } 
     }, delay, period);  
    } 

    public void paint(Graphics g) { 
     g.drawImage(picture, 0,0, this);  
    }   

    public void update(Graphics g) 
    { 
     super.paint(g); 

    } 
} 
+0

你的圖像已經被加載到'init'方法的applet中。在'TimerTask.run'方法中放置'picture = getImage(getDocumentBase(),「image.png」);'' – 2014-09-19 23:38:14

+0

1-確保在執行自定義繪畫之前清除「Graphics」上下文; 2-你沒有以任何方式重新加載圖像,那麼它是如何知道它已被更改的。將原始內容加載到內存中以加快訪問速度 – MadProgrammer 2014-09-20 02:17:18

+0

@ ug_ picture = getImage(getDocumentBase(),「image.png」);在timertask沒有工作。 – jerhynsoen 2014-09-21 00:27:37

回答

0

放棄了對小程序,並在HTML和JavaScript做到了。它的工作方式非常好。謝謝安德魯。我真的想讓小程序工作,但是......無論如何。

<html> 

<head> 
<script language="JavaScript"><!-- 
    function refreshIt() { 
    if (!document.images) return; 
     var date = new Date(); 
    document.images['image'].src = 'http://localhost:8080/image.jpg?ts=' + date.getTime(); 
     setTimeout('refreshIt()',2000); // refresh every 2000ms 
} 
    //--></script> 
</head> 

<body onLoad=" setTimeout('refreshIt()',2000)"> 

<img src="http://localhost:8080/image.jpg" name="image"> 

</body> 

</html>