java中repaint(), paint()问题

我在书上看到说当窗口从最大化,最小化状态还原时,或者被其他窗口覆盖,当其他窗口关闭或移开时,系统都会自动重画标准组件的图形图象,而不会自动重画组件上定制的图形,因此需要调... 我在书上看到说当窗口从最大化,最小化状态还原时,或者被其他窗口覆盖,当其他窗口关闭或移开时,系统都会自动重画标准组件的图形图象,而不会自动重画组件上定制的图形,因此需要调用repaint(),这样的话,我很迷惑,绘制标准组件的线程和绘制组件上定制的图形的线程是同一个线程吗?绘制标准组件的方法也是paint(Graphics g)吗?很多程序中需要在组件上绘制图形,要覆盖父类的paint(Graphics g),请问这个paint能绘制标准组件吗?还有一个问题,自定义paint(Grahpics g)方法中经常会在方法中调用super.paint(g),调用父类的paint有什么作用吗?但是有的在paint(Grahpics g)中却没有super.paint(g),请问这个是怎么回事?谢谢大家了
在自定义的绘图中都会覆盖父类的paint(Graphics g)请问绘制标准组件的函数是否也在这个paint()中呢?是否awt线程调用另外的函数来实现标准组件的绘制?swing组件中的JComponent中的paint()包含paintComponent(), paintBorder(),paintChildren()请问这些函数是否绘制标准组件?在程序中调用repaint()之后,是只有自定义的图形重新绘制,还是和标准组件一起重绘?
展开
 我来答
百度网友5623d4117
2007-10-19 · TA获得超过419个赞
知道小有建树答主
回答量:872
采纳率:0%
帮助的人:610万
展开全部
Java中事件的分配调度是由专门的线程完成的。当调用repaint方法时,实际上是发送一个重绘事件到事件队列,而后事件分配线程会调用paint方法来完成重绘。当在多线程时,一切正常,因为你调用repaint方法的线程没有占据全部的CPU时间,所以事件分配线程可以执行,并调用paint完成重绘。
而在单线程情况下,由于你的线程完全占据了CPU,事件分配线程无法执行,自然也就没法去分配你通过调用repaint方法插入的重绘事件。取代的做法就是直接调用paint(),而不是等待事件分配线程去调用。
儒墨老师
2007-10-19 · TA获得超过221个赞
知道小有建树答主
回答量:385
采纳率:0%
帮助的人:247万
展开全部
对于标准组件,比如按纽等,有个awt线程负责控制,不用我们来处理,这就是你说的系统自动重画.
而对于自己画的东西,比如画布(canvas)、自定义的图象等,则需要自己写程序去控制(repaint)。而自定义图象的绘画就在paint方法中
标准组件一般是用3d画图的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式