JFrame.repaint()和JPanel.repaint()之间的区别

时间:2012-07-29 10:58:35

标签: java swing

可以请任何人解释JPanel.repaint()方法与JFrame.repaint()方法之间的区别,我想两者都会在JPanel中调用paintComponent()方法。

请澄清,谢谢

3 个答案:

答案 0 :(得分:18)

在任何组件上调用repaint()都会向重绘管理器添加一个请求以绘制该组件。如果条件正确,管理员将安排调用Component的paint(...)方法。由于Component的paint方法将调用paintComponent(...)paintBorder(...)paintChildren(...),这将使组件绘制本身,其边框和级联绘画递归地呈现给它的所有子项,子项,子项在JFrame上调用此类会导致此级联在整个顶级窗口中发生,而在子组件上调用它将导致重新绘制该组件及其子组件。

请注意,调用repaint()并不能保证重绘管理器会绘制组件,尤其是在存在堆叠请求的情况下。有关详细信息,请阅读Painting in AWT and Swing

答案 1 :(得分:9)

1。当调用repaint()方法时,事件处理程序线程会通知所有组件,然后每个组件调用 paintComponent() <强>方法

2。调用JPanel.repaint() JPanel中的所有组件 repaint(),并且调用JFrame.repaint()将< strong> JFrame中的所有组件 repaint()

3. 调用 JFrame.repaint()重新绘制JPanel,而无需JPanel.repaint()....

答案 2 :(得分:2)

简而言之,

  • JPanel.repaint()将重塑自己及其子女。
  • JFrame.repaint()将重塑自己及其子女。但由于JFrame是基础,因此将重新绘制其中的每个组件。

检查&#34; @Hovercraft充满鳗鱼&#34;回答细节。