2014-09-19 3 views
0

image.png 파일이 2 초마다 덮어 씁니다. 애플릿이 이미지를 브라우저에 표시하기를 원합니다. 이미지를 표시하지만 문제는 이미지 파일이 컴퓨터에서 업데이트 된 후 이미지가 애플릿에서 업데이트되지 않는다는 것입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?이미지가 다시 칠판에 업데이트되지 않음

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' 메소드로 애플릿에로드되었을 것입니다. 'TimerTask.run' 메소드 안에'picture = getImage (getDocumentBase(), image.png ");'를 넣으십시오. –

+0

1- 사용자 정의 페인팅을 수행하기 전에'Graphics' 컨텍스트를 지우십시오. 2 - 어떤 방식 으로든 이미지를 다시로드하지 않았으므로 어떻게 변경되었는지 알 수 있습니다. 원본은 메모리에로드되어 액세스 속도가 향상됩니다. – MadProgrammer

+0

@ ug_ picture = getImage (getDocumentBase(), "image.png"); in timertask가 작동하지 않았습니다. – jerhynsoen

답변

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>