如果在一个JFrame对象中添加了一个JPanel容器对象  如果调用JFrame对象的repaint方法 它会不会去重画JPanel对象。还是调用JPanel的repaint方法?
好吧我想问的是 如果调用一个容器的repaint它是不是回去重画容器内所有的组件?如果是  它实现的时候是不是通过调用所有组件的repaint方法呢?如果每次调用容器的repaint 容器内所有的组件不管有没有改变都重画是不是太麻烦了

解决方案 »

  1.   

    repaint更像是一个事件,因为你调用它的时候,它并不是立即执行paint()进行重画的,GUI引擎只是记录了一个事件:哦,有请求说需要重画以下,有空我就调用下paint()函数。“如果调用一个容器的repaint它是不是回去重画容器内所有的组件?如果是 它实现的时候是不是通过调用所有组件的repaint方法呢?”是的。不是,前面已经说了repaint是个事件而已,并不实际执行重画。最后:可以只调用一个组件的repaint()。
      

  2.   

    那调用repaint后是不是会激发paintComponent方法
      

  3.   


    会激发所调用Component的paint()方法,但不是立即触发。甚至有可能你连续调用了两次repaint(),最后实际paint()只发生一次。
      

  4.   

    买本书看看吧,先把Java的GUI基本原理弄清晰,再继续,不是绘图机制问题,是整个GUI运作机制。