读书人

paint()何时被调用?解决思路

发布时间: 2012-01-14 20:02:35 作者: rapoo

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。

读书人网 >J2ME开发

热点推荐