我无法理解为什么paint()中的println()语句正在执行两次。这是代码 -
import java.awt.*;
import java.applet.*;
public class FirstApplet extends Applet
{
public void init()
{
System.out.println(getBackground());
}
public void paint(Graphics g)
{
setBackground(Color.CYAN);
setForeground(Color.RED);
g.drawString("This is my first Applet",250,250);
System.out.println(getBackground());
}
}
输出:
java.awt.Color中[R = 255,G = 255,B = 255]
java.awt.Color中[R = 0,G = 255,B = 255]
java.awt.Color中[R = 0,G = 255,B = 255]
有人可以解释一下为什么paint()里面的println()执行两次吗?
答案 0 :(得分:1)
public void paint(Graphics g)
{
setBackground(Color.CYAN); // will trigger repaint()!
setForeground(Color.RED); // will trigger repaint()!
g.drawString("This is my first Applet",250,250);
System.out.println(getBackground());
}
只要工具包认为有必要,就会调用paint(Graphics)
方法。有很多事情会导致repaint()
(反过来导致调用paint(Graphics)
)。其中一些是:
显然,只有程序员想要(或期望)它的时间才会发生 。如果“随时随地涂漆”是应用程序的问题,那就是应用程序。要排序的问题,而不是工具包。
查询: