如何在简单的小程序中绘画

问题描述 投票:0回答: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);
  }
}
java applet awt paint
2个回答
2
投票

引自:Paint()

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

因此,如果您遇到问题,如果 Paint() 方法是 不止一次地打电话,你已经做错了。不要那样做。 Paint() 方法应该只从现有数据中重绘其目标, 它不应该通过计算来确定要画什么。


2
投票

当组件需要重新绘制组件状态内容失效时,

paint
可能会调用
update
方法。

© www.soinside.com 2019 - 2024. All rights reserved.