Module java.desktop
Package javax.swing

Class RepaintManager

java.lang.Object
javax.swing.RepaintManager

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

从1.6版本开始,RepaintManager处理Swing顶层组件(JAppletJWindowJFrameJDialog)的重绘请求。对其中一个调用repaint将调用适当的addDirtyRegion方法。

自:
1.2
  • Constructor Details

    • RepaintManager

      public RepaintManager()
      创建一个新的RepaintManager实例。您很少直接调用此构造函数。要获取默认的RepaintManager,请使用RepaintManager.currentManager(JComponent)(通常为"this")。
  • Method Details

    • 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。 aRepaintManager将成为调用线程的线程组的当前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)
      Deprecated, for removal: This API element is subject to removal in a future version.
      The Applet API is deprecated. See the java.applet package documentation for further information.
      applet添加到需要重绘的Component列表中。
      参数:
      applet - 要重绘的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将完全绘制。
      参数:
      aComponent - 一个组件
    • markCompletelyClean

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

      public boolean isCompletelyDirty(JComponent aComponent)
      便利方法,如果在下一个paintDirtyRegions()调用期间aComponent将完全绘制,则返回true。如果计算组件的脏区域对您的组件很昂贵,请使用此方法,并在返回true时避免计算脏区域。
      参数:
      aComponent - 一个组件
      返回:
      如果在下一个paintDirtyRegions()调用期间aComponent将完全绘制,则返回true
    • 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都有一个双缓冲区。如果接收到的RepaintManager的最大双缓冲区大小已设置,则缓冲区可能小于(proposedWidth,proposedHeight)
      参数:
      c - 组件
      proposedWidth - 缓冲区的宽度
      proposedHeight - 缓冲区的高度
      返回:
      图像
    • getVolatileOffscreenBuffer

      public Image getVolatileOffscreenBuffer(Component c, int proposedWidth, int proposedHeight)
      返回应该与指定组件c一起用作双缓冲区的易失性离屏缓冲区。返回的图像将是VolatileImage的一个实例,如果无法实例化VolatileImage对象,则返回null。此缓冲区可能小于(proposedWidth,proposedHeight)。当为此RepaintManager设置了最大双缓冲区大小时,会发生这种情况。
      参数:
      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
      返回:
      如果此对象是双缓冲的,则返回 true