2012-11-06 5 views
3

코드에서 나는 init() 메서드에서 repaint() 메서드를 호출하지만 예상 한대로 출력되지 않습니다. repaint() 메서드를 10 번 호출했지만 paint()을 한 번만 호출했습니다 (O/P 스크린 샷 참조). 실수가 있습니다. 도와주세요. 감사자바 애플릿 페인트 방법 문제

코드

import java.awt.*; 
import java.applet.Applet; 
/* 
    <applet code="test" height=300 width=300> 
    </applet> 
*/ 
public class test extends Applet 
{ 
    int x,y; 
    public void init() 
    { 
     x=5; 
     y=10; 
     for(int i=1;i<10;i++) 
     { 
      System.out.println("From init "+i); 
      x+=(i*2);         
      y+=(i*3); 
      repaint();  
     }     
    } 
    public void paint(Graphics g) 
    { 
     System.out.println("Paint"); 
     g.drawLine(50,50,x,y); 
    } 
} 

Output

답변

3

때 페인트 (...)의 수라고하고, 그 repaint() 통화 만있는 경우 또는 당신이 완벽하게 제어 할 이상이없는 것을 양해 해 주시기 바랍니다 JVM에 페인트 할 제안. 너무 많은 repaint() 요청이 들어오고 자신의 작업이 진행되는 동안 스택되면 조합됩니다. 자세한 내용은 Painting in AWT and Swing을 참조하십시오.

코드가 작동하더라도 모든 x 및 y 변경 및 페인팅이 거의 즉시 수행되므로 코드 사용자에게 눈에 보이는 변경 사항이 발생하지 않습니다. 아마도 당신은 정말로 스윙 타이머를 사용하고 싶습니까? 아마 AWT가 아닌 Swing에서도 이것을 다시 코딩하고 싶을 것입니다.

+0

안내해 주셔서 감사합니다. – mcacorner

+0

@ReferenceNotFound : 환영합니다. 행운을 빈다. –