【问题标题】:What is the need of recursive update or paint in order to paint lightweight component?为了绘制轻量级组件,需要递归更新或绘制什么?
【发布时间】:2015-11-03 21:10:55
【问题描述】:

我正在阅读 this 关于在 AWT 和 Swing 中绘画的文章,该文章在 “轻量级如何绘制”部分中有以下段落

值得注意的是,Container.update() 的默认实现不使用递归来调用轻量级后代的 update() 或 paint()。这意味着任何使用 update() 进行增量绘制的重量级 Container 子类都必须确保在必要时递归地重新绘制轻量级后代。幸运的是,很少有重量级容器组件需要增量绘制,所以这个问题不会影响大多数程序。

请告诉我,在什么情况下我需要递归调用 update() 或 paint() 以及为什么?

【问题讨论】:

    标签: java swing recursion awt paint


    【解决方案1】:

    您不需要递归调用 update() 或 paint()。

    如果你想绘制一个组件,你要做的就是:

    component.repaint();
    

    这将向RepaintManager 添加一个绘制请求以绘制组件,Swing 将确保在调用paintChildren(...) 方法时绘制组件的子组件。请参阅A Closer Look at the Paint Mechanism 了解更多信息。

    【讨论】:

    • 但是这一段呢,我知道repaint()这个东西,但是我无法理解上面的行。为什么会这样?
    • 你为什么在乎?你有什么问题?不要在 Swing 应用程序中使用 AWT 组件。我不知道它是什么意思,但我猜它是说如果您将 Swing 组件添加到 AWT 组件,您将无法绘制 Swing 组件,因为 Swing 依赖于 paintChildren(...) 来确保绘制子组件.
    猜你喜欢
    • 2014-09-07
    • 2021-02-22
    • 2018-08-12
    • 1970-01-01
    • 2020-06-24
    • 2023-03-10
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多