日期:2014-05-20  浏览次数:20737 次

paint()何时被调用?
canvas   类中的抽象方法paint()在何时被调用   ?
是在构造函数中被隐式调用吗?

public   myCanvas   extends   Canvas{
  myCanvas(){
    //paint()在此处被调用?
    #the   first   code   line;
    //还是在此处被调用?
  }
 
  protected   void   paint(Graphics   g){
    //...
  }
}

------解决方案--------------------
在构造方法中最后进入的,打印一下就知道了
------解决方案--------------------
setCurrent
------解决方案--------------------
在setCurrent以及repaint()以及showNotify之后调用
------解决方案--------------------
汗一个楼上的
当然是先运行构造方法再运行paint了

setCurrent(new MyCanvas())
实际执行顺序是
MyCanvas canvas=new MyCanvas();//显然会调用构造方法
setCurrent(canvas);//再调用paint()
------解决方案--------------------
当你生成这个类的一个是实例的时候就调用了,然后当你setCurrentt后就跳转到你的Canvas页面把paint出来的东西绘制到屏幕上··
------解决方案--------------------
我们不用/能自己调用。如果我们需要刷新屏幕,需要调用类似update()的函数。
setCurrent()当然会调到paint()函数。
切换ui,就用setCurrent();
想更新当前的ui就用update()。

blog: http://java23.com/hb/
------解决方案--------------------
这是一个系统回调函数。
当setCurrent时,以及repaint,以及serviceRepaints时,发送消息至虚拟机,然后虚拟机回调。
当应用切换到电话然后又切回来的时候,由系统先回调showNotify然后paint。