首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JFrame.repaint()和JPanel.repaint()之间的区别

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

Stack Overflow用户
提问于 2012-07-29 18:58:35
回答 3查看 35.2K关注 0票数 8

请解释一下JPanel.repaint()方法和JFrame.repaint()方法之间的区别,我猜两者都是在JPanel中调用paintComponent()方法。

请澄清,谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-29 19:06:25

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

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

票数 18
EN

Stack Overflow用户

发布于 2012-07-29 19:02:09

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

2.调用JPanel.repaint()将把JPanel中的所有组件转换为 repaint(),调用JFrame.repaint()将JFrame中的所有组件转换为<>d17>。

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

票数 9
EN

Stack Overflow用户

发布于 2017-08-12 02:00:57

简而言之,

  • JPanel.repaint()将重新绘制自身及其子对象。
  • JFrame.repaint()将重新绘制自身及其子对象。但由于JFrame是基础,这将重绘其中的每个组件。

查看"@Hovercraft Full Of Eels“答案以了解详细信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11708678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档