2012-11-06 36 views
3

在代码中,我打电话repaint()方法从init()方法,但输出不符合我的预期。 我叫repaint()方法10次,但它只调用paint()一次(见O/P的屏幕截图)。 我是否犯了错误。请帮帮我。 感谢java小应用程序绘制方法故障

代码

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的变化和绘画几乎是瞬间完成的。也许你真的想使用Swing Timer?也许你想在Swing中重新编写这个代码,而不是AWT。

+0

感谢您的指导。 – mcacorner

+0

@ReferenceNotFound:不客气,祝您好运! –