请解释一下JPanel.repaint()方法和JFrame.repaint()方法之间的区别,我猜两者都是在JPanel中调用paintComponent()方法。
请澄清,谢谢
发布于 2012-07-29 19:06:25
在任何组件上调用repaint()都会向重绘管理器添加一个请求,以绘制该组件。如果条件正确,管理器将安排调用组件的paint(...)方法。由于组件的绘制方法将调用paintComponent(...)、paintBorder(...)和paintChildren(...),这将使组件以递归方式绘制其所有子项、子项、子项等的边框和级联绘制。在JFrame上调用此方法将导致在整个顶级窗口中发生此级联,而在子组件上调用此方法将导致仅对该组件及其子项进行重新绘制。
请注意,调用repaint()并不能保证重绘管理器将绘制组件,尤其是在存在堆栈请求的情况下。有关更多详细信息,请阅读Painting in AWT and Swing。
发布于 2012-07-29 19:02:09
1.当调用repaint()方法时,事件处理程序线程会通知所有组件,然后每个组件都会调用其 paintComponent() 方法。
2.调用JPanel.repaint()的将把JPanel中的所有组件转换为 repaint(),调用JFrame.repaint()将JFrame中的所有组件转换为<>d17>。
3.调用JFrame.repaint()来重新绘制JPanel,而不需要JPanel.repaint()....
发布于 2017-08-12 02:00:57
简而言之,
JPanel.repaint()将重新绘制自身及其子对象。JFrame.repaint()将重新绘制自身及其子对象。但由于JFrame是基础,这将重绘其中的每个组件。查看"@Hovercraft Full Of Eels“答案以了解详细信息。
https://stackoverflow.com/questions/11708678
复制相似问题