JAVA中paint()是自动执行的吗?

来源:百度知道 编辑:UC知道 时间:2024/06/10 21:57:07
panit(Graphics g)是component类的子类都有的方法。。是否自动调用?还是需要在run()中调用?如果是自动调用的话,是否当对一个构造方法包含有paint()方法的class实例化一个对象后调用构造方法后就会自动产生Graphics,然后自动调用paint()方法呢?

P.S在线程中。。刚注册没多少积分。。希望高手前辈多些指导~谢谢

是的paint()方法只会自动调用一次,而且 你用的时候要自己重写这个方法
调用过一次的 时候 可以在线程里用repaint() 再度调用

关于Graphics ; 楼主的观点大部分是对的,但是有点小问题
首先 你并没有 调用paint(g)方法,而是 系统调用的,或者是你自己repaint()
调用的
如果 你要调用paint()方法,你必须传进来一个 参数 Graphics
Graphics 这个对象的 表示的 是,你的绘制环境

比如 有2个 JFrame jf1,jf2,那么对应2个Graphics g1,g2
(g1=jf1.getGraphics(),g2=jf2.getGraphics())//获取 绘制环境
如果jf1 是显示的,jf2是隐藏的
那么 你自己调用 paint(g2)的时候 ,不会显示绘制的内容,因为
paint()实在jf2上绘制的,

“包含有paint()方法的class实例化一个对象后调用构造方法后就会自动产生Graphics”

Graphics 这个对象不是在 你自己写的 类中产生的
而是 在 JFrame等 一些 可以作为容器类里 已经实例化的
也就是说 他已经定好了 绘制环境,
所以 你写JFrame,什么的 需要实现paint()方法的 时候
你不需要指定一个Graphics 说明你的 绘制环境

PS(你也可试试 在 线程里调用 paint(),好像也可以,因为 毕竟也是一个方法
,我曾经 在 paint()方法 里调用过 repaint(),而不是在线程里调用repaint(),就达到了动画的效果
)

你可以单独写一个paint(Graphics g)然后在component子类对象处调用repain以达到重新调用pain的目的,repain已实现的方法。希望对你有帮助