2

以下代码应该打印

里面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);
  }
}
4

2 回答 2

2

引用自:Paint()

paint() 方法将根据需要多次调用。如果您在 GUI 上放置另一个窗口,则将调用 paint() 方法。如果您随后最小化该窗口并使您的 GUI 再次可见,则将再次调用 paint() 方法。等等。

因此,如果您多次调用paint() 方法时遇到问题,则说明您做错了。不要那样做。paint() 方法应该只从现有数据中重新绘制它的目标,它不应该通过计算来确定要绘制的内容。

于 2013-01-20T18:38:15.310 回答
2

当组件需要重绘组件状态的内容无效时,paint可以调用该方法。update

于 2013-01-20T18:27:23.893 回答