关于java paint(Graphics g)函数调用的一个小问题?
在程序中怎样对paint(Graphics g)函数调用的?repaint()函数是在怎么事件下才调用paint(Graphics g)的,有什么限制条件和响应操作啊? 问题点数:20、回复次数:5Top
1 楼zaxinglewa(杂幸乐蛙)回复于 2005-04-02 15:06:39 得分 0
是不是和组件有关系?什么关系?怎么解决啊?Top
2 楼zaxinglewa(杂幸乐蛙)回复于 2005-04-02 15:23:21 得分 0
我遇到的问题是:在我添加完一些组件后再用repaint()方法不能成功调用paint(Graphics g)了!我认为这是组件引起的,但是不知道怎么引起的?我在JFrame.getContentPane()上加了一个JPanel和JLabel.它的Layout是null。Top
3 楼DESL(奇多多 o_O (★★★★))回复于 2005-04-02 16:43:36 得分 0
在方法中使用repaint方法就会调用paint方法Top
4 楼blackpark(暖咖啡)回复于 2005-04-02 20:37:23 得分 5
在Applet类中repaint()先调用update()清除面板,然后吊paint()方法
JApplet类的update()不再清除背景了,它掉paint()Top
5 楼DanielYWoo(绿色毒汁)回复于 2005-04-06 17:55:14 得分 15
等消息分发线程处理一个重绘消息的时候,会调用paint方法,
如果你调用了repaint,如果组件是轻量级的,则不擦除背景并要求夫窗口重绘,如果父窗口是轻量级的,继续向上找,直到找到一个重量级父窗口(本地实现窗口),擦除背景,最后在系统的实践队列中插入一个消息,表示组件需要被重绘,如果发现队列中有这个消息,那么消息将会被合并(message collapse),等到处里这个消息的时候,再调用update重绘。
JComponent的update默认实现是直接调paint(),这样paint被调用,组建被重绘
但是重写update()可以限定重绘的范围来实现增量重绘(一般很难实现),这样性能会搞很多
总之,paint/update方法一般由消息分发线程调用,你经常调用的是repaint
明白?
不明白看看这个
http://java.sun.com/products/jfc/tsc/articles/painting/Top




