3

在代码中,我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);
    }   
}

输出

4

1 回答 1

3

请理解,您无法完全控制是否或何时调用paint(...),并且repaint()调用只是对 JVM 绘制的建议。如果有太多的 repaint() 请求进入并且它们像你的那样堆积起来,那么它们将被合并。有关这方面的更多详细信息,请查看这篇文章,在 AWT 和 Swing 中绘画

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

于 2012-11-06T18:13:08.073 回答