JPanel.repaint()
可以请任何人解释方法和方法之间的区别JFrame.repaint()
,我猜两者都调用paintComponent()
JPanel 中的方法。
请澄清一下,谢谢
调用repaint()
任何组件都会向重绘管理器添加一个请求以绘制该组件。如果条件正确,管理器将安排paint(...)
调用组件的方法。由于组件的绘制方法随后将调用paintComponent(...)
,这将使组件自身绘制,其边框paintBorder(...)
和paintChildren(...)
级联绘制递归到其所有子级、它们的子级、其子级的子级等。在 JFrame 上调用此函数将导致整个级联发生整个顶级窗口,而在子组件上调用它只会导致该组件及其子组件的重新绘制。
请注意,调用repaint()
并不能保证重绘管理器将绘制组件,尤其是在有堆叠请求的情况下。有关详细信息,请阅读AWT 和 Swing 中的绘画。
1.当repaint()
方法被调用时,事件处理线程通知所有组件,然后每个组件调用它们的 paintComponent()
方法。
2.调用JPanel.repaint()
会将JPanel 内的所有组件变为 repaint()
,调用JFrame.repaint()
会将JFrame 内的所有组件变为 repaint()
。
3.调用JFrame.repaint() 也可以重新绘制 JPanel,而不需要 JPanel.repaint()....
简单来说,
JPanel.repaint()
将重新绘制自己和它的孩子。JFrame.repaint()
将重新绘制自己和它的孩子。但由于JFrame
是基础,这将重新绘制其中的每个组件。详情请查看“@Hovercraft Full Of Eels”答案。