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

关于Component的repaint方法的疑问?
如果在一个JFrame对象中添加了一个JPanel容器对象 如果调用JFrame对象的repaint方法 它会不会去重画JPanel对象。还是调用JPanel的repaint方法?


好吧我想问的是 如果调用一个容器的repaint它是不是回去重画容器内所有的组件?如果是 它实现的时候是不是通过调用所有组件的repaint方法呢?

如果每次调用容器的repaint 容器内所有的组件不管有没有改变都重画是不是太麻烦了

------解决方案--------------------
repaint更像是一个事件,因为你调用它的时候,它并不是立即执行paint()进行重画的,GUI引擎只是记录了一个事件:哦,有请求说需要重画以下,有空我就调用下paint()函数。

“如果调用一个容器的repaint它是不是回去重画容器内所有的组件?如果是 它实现的时候是不是通过调用所有组件的repaint方法呢?”

是的。不是,前面已经说了repaint是个事件而已,并不实际执行重画。

最后:可以只调用一个组件的repaint()。