在代码中,我从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);
}
}
答案 0 :(得分:3)
请理解,您无法完全控制是否或何时调用paint(...),并且repaint()
调用只是建议JVM绘制的。如果有太多repaint()请求进入并且它们正在进行堆叠,那么它们将被合并。有关详细信息,请查看此文Painting in AWT and Swing。
无论如何,即使您的代码有效,它仍然不会对代码的用户造成任何可见的更改,因为所有x和y的更改和绘制几乎都会立即完成。也许你真的想使用Swing Timer?也许你想在Swing而不是AWT中重新编码。