【问题标题】:Error in a simple applet简单小程序中的错误
【发布时间】:2013-01-20 18:16:29
【问题描述】:

下面的代码应该打印出来

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

【问题讨论】:

标签: java applet awt paint


【解决方案1】:

引用自:Paint()

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

所以如果你有一些问题,如果 paint() 方法是 不止一次打电话,你做错了。不要那样做。 paint() 方法应该只从现有数据中重新绘制它的目标, 它永远不必进行计算来确定要绘制的内容。

【讨论】:

  • 所以你的意思是msg += "inside paint()."中的计算出了问题??
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2013-05-07
    • 2013-11-13
    • 2013-11-12
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 2012-06-09
    相关资源
    最近更新 更多