在代码中我正在调用repaint()
方法来自init()
方法,但输出并不符合我的预期。
我打了电话repaint()
方法 10 次但它调用paint()
仅一次(参见 O/P 的屏幕截图)。
我有什么错误吗?请帮我。
谢谢
code
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);
}
}
请理解,您无法完全控制是否或何时调用 Paint(...) ,并且repaint()
调用只是 JVM 绘制的建议。如果收到太多 repaint() 请求并且它们像您的请求一样堆积起来,那么它们将被合并。有关这方面的更多详细信息,请查看这篇文章,在 AWT 和 Swing 中绘画 http://www.oracle.com/technetwork/java/painting-140037.html.
无论如何,即使您的代码有效,它仍然不会对代码的用户造成任何可见的更改,因为所有 x 和 y 更改和绘制几乎都会立即完成。也许您真的想使用 Swing Timer?也许您想在 Swing 而不是 AWT 中重新编码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)