可以请任何人解释JPanel.repaint()
方法与JFrame.repaint()
方法之间的区别,我想两者都会在JPanel中调用paintComponent()
方法。
请澄清,谢谢
答案 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;回答细节。