以下代码应该打印
里面
init()
--里面start()
--里面paint()
。
但它打印了最后一部分
inside paint()
两次!这是为什么?
public class SampleApplet extends Applet {
String msg;
@Override
public void init(){
setBackground(Color.BLACK);
setForeground(Color.yellow);
msg = "Inside init()-- ";
}
@Override
public void start(){
msg += "Inside start()-- ";
}
@Override
public void paint(Graphics g){
msg += "Inside paint().";
g.drawString(msg, 10, 30);
}
}
引自:Paint():
paint() 方法将根据需要多次调用。如果你 在 GUI 上放置另一个窗口,然后 Paint() 方法将是 叫。如果您最小化该窗口并使 GUI 可见 再次调用paint()方法。等等。
因此,如果您遇到问题,如果 Paint() 方法是 不止一次地打电话,你已经做错了。不要那样做。 Paint() 方法应该只从现有数据中重绘其目标, 它不应该通过计算来确定要画什么。
当组件需要重新绘制组件状态内容失效时,
paint
可能会调用update
方法。