java applet paint方法麻烦

时间:2012-11-06 18:09:10

标签: java applet paint repaint

在代码中,我从repaint()方法调用init()方法,但输出不符合我的预期。 我调用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

1 个答案:

答案 0 :(得分:3)

请理解,您无法完全控制是否或何时调用paint(...),并且repaint()调用只是建议JVM绘制的。如果有太多repaint()请求进入并且它们正在进行堆叠,那么它们将被合并。有关详细信息,请查看此文Painting in AWT and Swing

无论如何,即使您的代码有效,它仍然不会对代码的用户造成任何可见的更改,因为所有x和y的更改和绘制几乎都会立即完成。也许你真的想使用Swing Timer?也许你想在Swing而不是AWT中重新编码。