简单小程序中出错

时间:2013-01-20 18:16:30

标签: java applet awt paint

以下代码应该打印

init()内 - start()内 - paint()内。

但它会打印最后一部分inside paint() TWICE!那是为什么?

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);
  }
}

2 个答案:

答案 0 :(得分:2)

当组件需要重新绘制组件状态的内容时,paint可能会调用update方法。

答案 1 :(得分:2)

引自:Paint()

  

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

     

因此,如果paint()方法是有问题的话   不止一次打电话,你做错了。不要这样做。   paint()方法应该只从现有数据重绘其目标,   它永远不应该做计算来弄清楚要画什么。