8

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

请澄清一下,谢谢

4

3 回答 3

18

调用repaint()任何组件都会向重绘管理器添加一个请求以绘制该组件。如果条件正确,管理器将安排paint(...)调用组件的方法。由于组件的绘制方法随后将调用paintComponent(...),这将使组件自身绘制,其边框paintBorder(...)paintChildren(...)级联绘制递归到其所有子级、它们的子级、其子级的子级等。在 JFrame 上调用此函数将导致整个级联发生整个顶级窗口,而在子组件上调用它只会导致该组件及其子组件的重新绘制。

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

于 2012-07-29T11:06:25.007 回答
9

1.repaint()方法被调用时,事件处理线程通知所有组件,然后每个组件调用它们的 paintComponent() 方法。

2.调用JPanel.repaint()会将JPanel 内的所有组件变为 repaint(),调用JFrame.repaint()会将JFrame 内的所有组件变为 repaint()

3.调用JFrame.repaint() 也可以重新绘制 JPanel,而不需要 JPanel.repaint()....

于 2012-07-29T11:02:08.557 回答
2

简单来说,

  • JPanel.repaint()将重新绘制自己和它的孩子。
  • JFrame.repaint()将重新绘制自己和它的孩子。但由于JFrame是基础,这将重新绘制其中的每个组件。

详情请查看“@Hovercraft Full Of Eels”答案。

于 2017-08-11T18:00:57.070 回答