模块 java.desktop

类 RepaintManager

java.lang.Object
javax.swing.RepaintManager

public class RepaintManager extends Object
此类管理重绘请求,允许最小化重绘次数,例如通过将多个请求折叠为组件树成员的单个重绘。

从 1.6 开始,RepaintManager 处理 Swing 顶级组件(JAppletJWindowJFrameJDialog)的重绘请求。对其中之一的 repaint 的任何调用都将调用适当的 addDirtyRegion 方法。

自从:
1.2
  • 构造方法详细信息

    • RepaintManager

      public RepaintManager()
      创建一个新的 RepaintManager 实例。您很少调用此构造方法。直接地。要获取默认的 RepaintManager,请使用 RepaintManager.currentManager(JComponent)(通常为“this”)。
  • 方法详情

    • currentManager

      public static RepaintManager  currentManager(Component  c)
      为给定组件的调用线程返回 RepaintManager。
      参数:
      c - 一个组件——在默认实现中未使用,但可以被覆盖版本用于根据组件返回不同的 RepaintManager
      返回:
      RepaintManager 对象
    • currentManager

      public static RepaintManager  currentManager(JComponent  c)
      为给定 JComponent 的调用线程返回 RepaintManager。

      注意:此方法的存在是为了与 Swing 库的早期版本向后二进制兼容。它只是返回 currentManager(Component) 返回的结果。

      参数:
      c - 一个 JComponent -- 未使用
      返回:
      RepaintManager 对象
    • setCurrentManager

      public static void setCurrentManager(RepaintManager  aRepaintManager)
      设置应该用于调用线程的 RepaintManager。重绘管理器将成为调用线程的线程组的当前 RepaintManager。
      参数:
      aRepaintManager - 要使用的 RepaintManager 对象
    • addInvalidComponent

      public void addInvalidComponent(JComponent  invalidComponent)
      将组件标记为需要布局,并为将首先验证组件的事件调度线程排队一个可运行的 isValidateRoot() 祖先。
      参数:
      invalidComponent - 一个组件
      参见:
    • removeInvalidComponent

      public void removeInvalidComponent(JComponent  component)
      从无效组件列表中删除一个组件。
      参数:
      component - 一个组件
      参见:
    • addDirtyRegion

      public void addDirtyRegion(JComponent  c, int x, int y, int w, int h)
      在应该刷新的组件列表中添加一个组件。如果c已经有一个脏区域,矩形(x,y,w,h)将与应该重绘的区域合并。
      参数:
      c - 要重绘的组件,null 不会导致任何事情发生。
      x - 重绘区域的 X 坐标
      y - 重绘区域的 Y 坐标
      w - 重绘区域的宽度
      h - 重绘区域的高度
      参见:
    • addDirtyRegion

      public void addDirtyRegion(Window  window, int x, int y, int w, int h)
      window 添加到需要重新绘制的 Component 列表中。
      参数:
      window - 要重绘的窗口,null 不会导致任何事情发生。
      x - 重绘区域的 X 坐标
      y - 重绘区域的 Y 坐标
      w - 重绘区域的宽度
      h - 重绘区域的高度
      自从:
      1.6
      参见:
    • addDirtyRegion

      @Deprecated (since ="9", forRemoval =true) public void addDirtyRegion(Applet  applet, int x, int y, int w, int h)
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      Applet API 已弃用。有关详细信息,请参阅 java.applet 包文档
      applet 添加到需要重新绘制的 Component 列表中。
      参数:
      applet - 要重绘的小程序,null 导致什么都没有发生。
      x - 重绘区域的 X 坐标
      y - 重绘区域的 Y 坐标
      w - 重绘区域的宽度
      h - 重绘区域的高度
      自从:
      1.6
      参见:
    • getDirtyRegion

      public Rectangle  getDirtyRegion(JComponent  aComponent)
      返回组件的当前脏区。如果组件不脏,则返回一个空矩形。
      参数:
      aComponent - 一个组件
      返回:
      该区域
    • markCompletelyDirty

      public void markCompletelyDirty(JComponent  aComponent)
      将组件标记为完全脏。组件将在下一次 paintDirtyRegions() 调用期间被完全绘制。
      参数:
      aComponent - 一个组件
    • markCompletelyClean

      public void markCompletelyClean(JComponent  aComponent)
      将组件标记为完全清洁。组件在下一次 paintDirtyRegions() 调用期间不会被绘制。
      参数:
      aComponent - 一个组件
    • isCompletelyDirty

      public boolean isCompletelyDirty(JComponent  aComponent)
      返回 true 的便捷方法组件将在下一个 paintDirtyRegions() 期间被完全绘制。如果计算脏区对您的组件来说代价高昂,请使用此方法并在它返回 true 时避免计算脏区。
      参数:
      aComponent - 一个组件
      返回:
      true如果组件将在下一个 paintDirtyRegions() 期间被完全绘制。
    • validateInvalidComponents

      public void validateInvalidComponents()
      验证所有已标记为无效的组件。
      参见:
    • paintDirtyRegions

      public void paintDirtyRegions()
      油漆所有已标记为脏的组件。
      参见:
    • toString

      public String  toString()
      返回显示和标识此对象属性的字符串。
      重写:
      toString 在类 Object
      返回:
      此对象的字符串表示形式
    • getOffscreenBuffer

      public Image  getOffscreenBuffer(Component  c, int proposedWidth, int proposedHeight)
      返回应该用作组件 c 的双缓冲区的屏幕外缓冲区。默认情况下,每个 RepaintManager 有一个双缓冲区。缓冲区可能小于 (proposedWidth,proposedHeight) 当为接收重绘管理器设置了最大双缓冲区大小时会发生这种情况。
      参数:
      c - 组件
      proposedWidth - 缓冲区的宽度
      proposedHeight - 缓冲区的高度
      返回:
      图片
    • getVolatileOffscreenBuffer

      public Image  getVolatileOffscreenBuffer(Component  c, int proposedWidth, int proposedHeight)
      返回一个易失性屏幕外缓冲区,该缓冲区应用作具有指定组件 c 的双缓冲区。返回的图像将是 VolatileImage 的实例,如果无法实例化 VolatileImage 对象,则返回 null。此缓冲区可能小于 (proposedWidth,proposedHeight)。当为此重绘管理器设置了最大双缓冲区大小时,就会发生这种情况。
      参数:
      c - 组件
      proposedWidth - 缓冲区的宽度
      proposedHeight - 缓冲区的高度
      返回:
      易变的形象
      自从:
      1.4
      参见:
    • setDoubleBufferMaximumSize

      public void setDoubleBufferMaximumSize(Dimension  d)
      设置最大双缓冲区大小。
      参数:
      d - 维度
    • getDoubleBufferMaximumSize

      public Dimension  getDoubleBufferMaximumSize()
      返回最大双缓冲区大小。
      返回:
      表示最大尺寸的 Dimension 对象
    • setDoubleBufferingEnabled

      public void setDoubleBufferingEnabled(boolean aFlag)
      在此 RepaintManager 中启用或禁用双缓冲。注意:此属性的默认值是为给定平台上的最佳绘制性能而设置的,不建议程序直接修改此属性。
      参数:
      aFlag - true 激活双缓冲
      参见:
    • isDoubleBufferingEnabled

      public boolean isDoubleBufferingEnabled()
      如果此 RepaintManager 是双缓冲的,则返回 true。此属性的默认值可能因平台而异。在 AWT 支持本机双缓冲的平台上,默认值将为 false 以避免 Swing 中不必要的缓冲。在不支持本机双缓冲的平台上,默认值为 true
      返回:
      如果此对象是双缓冲的,则为真