Class RepaintManager

java.lang.Object
javax.swing.RepaintManager

public class RepaintManager extends Object
This class manages repaint requests, allowing the number of repaints to be minimized, for example by collapsing multiple requests into a single repaint for members of a component tree.

As of 1.6 RepaintManager handles repaint requests for Swing's top level components (JWindow, JFrame and JDialog). Any calls to repaint on one of these will call into the appropriate addDirtyRegion method.

Since:
1.2
  • Constructor Summary

    Constructors
    Constructor
    Description
    Create a new RepaintManager instance.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addDirtyRegion(Window window, int x, int y, int w, int h)
    Adds window to the list of Components that need to be repainted.
    void
    addDirtyRegion(JComponent c, int x, int y, int w, int h)
    Add a component in the list of components that should be refreshed.
    void
    addInvalidComponent(JComponent invalidComponent)
    Mark the component as in need of layout and queue a runnable for the event dispatching thread that will validate the components first isValidateRoot() ancestor.
    Return the RepaintManager for the calling thread given a Component.
    Return the RepaintManager for the calling thread given a JComponent.
    Return the current dirty region for a component.
    Returns the maximum double buffer size.
    getOffscreenBuffer(Component c, int proposedWidth, int proposedHeight)
    Return the offscreen buffer that should be used as a double buffer with the component c.
    getVolatileOffscreenBuffer(Component c, int proposedWidth, int proposedHeight)
    Return a volatile offscreen buffer that should be used as a double buffer with the specified component c.
    boolean
    Convenience method that returns true if aComponent will be completely painted during the next paintDirtyRegions().
    boolean
    Returns true if this RepaintManager is double buffered.
    void
    Mark a component completely clean.
    void
    Mark a component completely dirty.
    void
    Paint all of the components that have been marked dirty.
    void
    Remove a component from the list of invalid components.
    static void
    Set the RepaintManager that should be used for the calling thread.
    void
    Enables or disables double buffering in this RepaintManager.
    void
    Set the maximum double buffer size.
    Returns a string that displays and identifies this object's properties.
    void
    Validate all of the components that have been marked invalid.

    Methods declared in class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    Modifier and Type
    Method
    Description
    protected Object
    Creates and returns a copy of this object.
    boolean
    Indicates whether some other object is "equal to" this one.
    protected void
    Deprecated, for removal: This API element is subject to removal in a future version.
    Finalization is deprecated and subject to removal in a future release.
    final Class<?>
    Returns the runtime class of this Object.
    int
    Returns a hash code value for this object.
    final void
    Wakes up a single thread that is waiting on this object's monitor.
    final void
    Wakes up all threads that are waiting on this object's monitor.
    final void
    Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
    final void
    wait(long timeoutMillis)
    Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
    final void
    wait(long timeoutMillis, int nanos)
    Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  • Constructor Details

    • RepaintManager

      public RepaintManager()
      Create a new RepaintManager instance. You rarely call this constructor. directly. To get the default RepaintManager, use RepaintManager.currentManager(JComponent) (normally "this").
  • Method Details

    • currentManager

      public static RepaintManager currentManager(Component c)
      Return the RepaintManager for the calling thread given a Component.
      Parameters:
      c - a Component -- unused in the default implementation, but could be used by an overridden version to return a different RepaintManager depending on the Component
      Returns:
      the RepaintManager object
    • currentManager

      public static RepaintManager currentManager(JComponent c)
      Return the RepaintManager for the calling thread given a JComponent.

      Note: This method exists for backward binary compatibility with earlier versions of the Swing library. It simply returns the result returned by currentManager(Component).

      Parameters:
      c - a JComponent -- unused
      Returns:
      the RepaintManager object
    • setCurrentManager

      public static void setCurrentManager(RepaintManager aRepaintManager)
      Set the RepaintManager that should be used for the calling thread. aRepaintManager will become the current RepaintManager for the calling thread's thread group.
      Parameters:
      aRepaintManager - the RepaintManager object to use
    • addInvalidComponent

      public void addInvalidComponent(JComponent invalidComponent)
      Mark the component as in need of layout and queue a runnable for the event dispatching thread that will validate the components first isValidateRoot() ancestor.
      Parameters:
      invalidComponent - a component
      See Also:
    • removeInvalidComponent

      public void removeInvalidComponent(JComponent component)
      Remove a component from the list of invalid components.
      Parameters:
      component - a component
      See Also:
    • addDirtyRegion

      public void addDirtyRegion(JComponent c, int x, int y, int w, int h)
      Add a component in the list of components that should be refreshed. If c already has a dirty region, the rectangle (x,y,w,h) will be unioned with the region that should be redrawn.
      Parameters:
      c - Component to repaint, null results in nothing happening.
      x - X coordinate of the region to repaint
      y - Y coordinate of the region to repaint
      w - Width of the region to repaint
      h - Height of the region to repaint
      See Also:
    • addDirtyRegion

      public void addDirtyRegion(Window window, int x, int y, int w, int h)
      Adds window to the list of Components that need to be repainted.
      Parameters:
      window - Window to repaint, null results in nothing happening.
      x - X coordinate of the region to repaint
      y - Y coordinate of the region to repaint
      w - Width of the region to repaint
      h - Height of the region to repaint
      Since:
      1.6
      See Also:
    • getDirtyRegion

      public Rectangle getDirtyRegion(JComponent aComponent)
      Return the current dirty region for a component. Return an empty rectangle if the component is not dirty.
      Parameters:
      aComponent - a component
      Returns:
      the region
    • markCompletelyDirty

      public void markCompletelyDirty(JComponent aComponent)
      Mark a component completely dirty. aComponent will be completely painted during the next paintDirtyRegions() call.
      Parameters:
      aComponent - a component
    • markCompletelyClean

      public void markCompletelyClean(JComponent aComponent)
      Mark a component completely clean. aComponent will not get painted during the next paintDirtyRegions() call.
      Parameters:
      aComponent - a component
    • isCompletelyDirty

      public boolean isCompletelyDirty(JComponent aComponent)
      Convenience method that returns true if aComponent will be completely painted during the next paintDirtyRegions(). If computing dirty regions is expensive for your component, use this method and avoid computing dirty region if it return true.
      Parameters:
      aComponent - a component
      Returns:
      true if aComponent will be completely painted during the next paintDirtyRegions().
    • validateInvalidComponents

      public void validateInvalidComponents()
      Validate all of the components that have been marked invalid.
      See Also:
    • paintDirtyRegions

      public void paintDirtyRegions()
      Paint all of the components that have been marked dirty.
      See Also:
    • toString

      public String toString()
      Returns a string that displays and identifies this object's properties.
      Overrides:
      toString in class Object
      Returns:
      a String representation of this object
    • getOffscreenBuffer

      public Image getOffscreenBuffer(Component c, int proposedWidth, int proposedHeight)
      Return the offscreen buffer that should be used as a double buffer with the component c. By default there is a double buffer per RepaintManager. The buffer might be smaller than (proposedWidth,proposedHeight) This happens when the maximum double buffer size as been set for the receiving repaint manager.
      Parameters:
      c - the component
      proposedWidth - the width of the buffer
      proposedHeight - the height of the buffer
      Returns:
      the image
    • getVolatileOffscreenBuffer

      public Image getVolatileOffscreenBuffer(Component c, int proposedWidth, int proposedHeight)
      Return a volatile offscreen buffer that should be used as a double buffer with the specified component c. The image returned will be an instance of VolatileImage, or null if a VolatileImage object could not be instantiated. This buffer might be smaller than (proposedWidth,proposedHeight). This happens when the maximum double buffer size has been set for this repaint manager.
      Parameters:
      c - the component
      proposedWidth - the width of the buffer
      proposedHeight - the height of the buffer
      Returns:
      the volatile image
      Since:
      1.4
      See Also:
    • setDoubleBufferMaximumSize

      public void setDoubleBufferMaximumSize(Dimension d)
      Set the maximum double buffer size.
      Parameters:
      d - the dimension
    • getDoubleBufferMaximumSize

      public Dimension getDoubleBufferMaximumSize()
      Returns the maximum double buffer size.
      Returns:
      a Dimension object representing the maximum size
    • setDoubleBufferingEnabled

      public void setDoubleBufferingEnabled(boolean aFlag)
      Enables or disables double buffering in this RepaintManager. CAUTION: The default value for this property is set for optimal paint performance on the given platform and it is not recommended that programs modify this property directly.
      Parameters:
      aFlag - true to activate double buffering
      See Also:
    • isDoubleBufferingEnabled

      public boolean isDoubleBufferingEnabled()
      Returns true if this RepaintManager is double buffered. The default value for this property may vary from platform to platform. On platforms where native double buffering is supported in the AWT, the default value will be false to avoid unnecessary buffering in Swing. On platforms where native double buffering is not supported, the default value will be true.
      Returns:
      true if this object is double buffered