kot*_*oko 5 java swing refresh repaint
我试图了解何时使用revalidate/repaint/pack.
令人惊讶的是,我没有找到更详细的引擎盖文档(随意链接).
到目前为止,我已经明白这是RepaintManager的全部责任.
这篇关于Oracle的文章解释说,调用重绘会在Event Dispatcher Thread上排队一个作业,该作业将在组件上调用paintImmediately()(这会重绘组件).
此跟踪表示要生效或不生效与LayoutManager相关联.而这完全取决于组件的大小而不是内容.
以下是一些需要调用这些方法的基本情况(我介绍了基础知识,但我可能错过了其他一些需要调用这些方法的情况).
revalidate()一个容器上,当你可以:添加一个或多个组件,删除一个或多个组件,改变一个或多个内含成分的限制(限制或XXXSize(),尽管后者不推荐),改变了LayoutManager的容器.repaint()在需要重新绘制该组件(及其后代)时调用.最终,这将调用paintComponent()(对于基本小部件,它将委托给XXXUI.paint()),paintBorder()并且paintChildren()(至少在Swing中)pack()实际上将窗口的大小设置为其首选大小.在使窗口可见之前,通常应该调用此方法.您可以稍后调用它,但这会产生奇怪的用户体验(我不知道很多应用程序一旦显示就会调整其窗口大小)使用的主要优点revalidate(),并repaint()是它们可以凝聚自己.这意味着如果您多次调用repaint(),绘画将只执行一次.
| 归档时间: |
|
| 查看次数: |
638 次 |
| 最近记录: |