2017-09-19 11 views
0

나는 이것을 읽을 수있다 : http://www.dmc.fmph.uniba.sk/public_html/doc/Java/ch10.htm runnables와 애플릿에 대한 이해를 돕고이 코드를 테스트하기로 결정했다. 그러나 스레드 내에서 repaint() 메서드는 호출되지 않습니다. 대신 내가 할, 그러나실행 가능한 자바에서 다시 칠하기

0 
1 
2 
... 
29 

:

public class test extends Applet implements Runnable{ 
    int hello; 

    public void start(){ 
     Thread run = new Thread(this); 
     run.start(); 
    } 

    public void run() { 
     for (int i = 0; i < 30; i++){ 
      hello = i; 
      repaint(); 
     } 
    } 

    public void paint(Graphics g){ 
     System.out.println(hello); 
    } 
} 

나는 나의 결과는 무엇인가 것으로 기대

29 
29 

과 그 이유를 이해하지 않습니다. stop() 메서드가 없기 때문입니까?

+0

빠른 연속으로'repaint()'를 여러번 호출하면 일반적으로 하나의 호출로 통합됩니다. 1) 애플릿을 코딩하는 이유는 무엇입니까? 교사가 지정했기 때문에 [CS 교사가 ** Java 애플릿 교육 **을 중단해야하는 이유] (http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should?hl=ko)를 참조하십시오. -stop-teaching-java-applets /)를 사용합니다. 2) 왜 AWT를 사용합니까? Swing을 위해 AWT 구성 요소를 포기해야하는 많은 이유 때문에 [이 답변] (http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978)을 참조하십시오. –

답변

-1

편집 :

애플릿이 아니라 구성 요소를 생각하고있었습니다. 회상은 페인트와 같지 않습니다. 루프 인덱스를보고 싶다면 페인트를 호출하고 메서드에 Graphics 객체를 제공해야합니다.

+0

어떻게 그럴 수 있습니까? 나는 run()과 paint() 둘 다에 대해 @Override를 넣으려고했지만 작동하지 않는 것 같습니다. –

+0

위의 편집을 참조하십시오. 애플릿에는 그 방법이 없다는 것을 잊었습니다. 이것들은 JComponent의 일부이며, JPanel과 같은 클래스에 의해 서브 클래스 화됩니다. 애플릿의 페인팅 예제로 http://www.oracle.com/technetwork/java/applet-137165.html을 참조하십시오. – jdhurricanes