Module java.desktop
Package java.awt

## Class Component.FlipBufferStrategy

- java.lang.Object
- - java.awt.image.BufferStrategy
  - - java.awt.Component.FlipBufferStrategy

- Enclosing class:
    Component

      protected class Component.FlipBufferStrategy
      extends BufferStrategy

  Inner class for flipping buffers on a component. That component must be a `Canvas` or `Window` or `Applet`.
  Since:
    1.4
  See Also:
    `Canvas`, `Window`, `Applet`, `BufferStrategy`

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected BufferCapabilities` | `caps` | The buffering capabilities
    `protected Image` | `drawBuffer` | The drawing buffer
    `protected VolatileImage` | `drawVBuffer` | The drawing buffer as a volatile image
    `protected int` | `numBuffers` | The number of buffers
    `protected boolean` | `validatedContents` | Whether or not the drawing buffer has been recently restored from a lost state.

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `FlipBufferStrategy​(int numBuffers, BufferCapabilities caps)` | Creates a new flipping buffer strategy for this component.

  - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `contentsLost()` | Returns whether the drawing buffer was lost since the last call to `getDrawGraphics`.
    `boolean` | `contentsRestored()` | Returns whether the drawing buffer was recently restored from a lost state and reinitialized to the default background color (white).
    `protected void` | `createBuffers​(int numBuffers, BufferCapabilities caps)` | Creates one or more complex, flipping buffers with the given capabilities.
    `protected void` | `destroyBuffers()` | Destroys the buffers created through this object
    `void` | `dispose()` | Releases system resources currently consumed by this `BufferStrategy` and removes it from the associated Component.
    `protected void` | `flip​(BufferCapabilities.FlipContents flipAction)` | Flipping moves the contents of the back buffer to the front buffer, either by copying or by moving the video pointer.
    `protected Image` | `getBackBuffer()` |
    `BufferCapabilities` | `getCapabilities()` | Returns the `BufferCapabilities` for this `BufferStrategy`.
    `Graphics` | `getDrawGraphics()` | Creates a graphics context for the drawing buffer.
    `protected void` | `revalidate()` | Restore the drawing buffer if it has been lost
    `void` | `show()` | Makes the next available buffer visible by either blitting or flipping.

    - ### Methods declared in class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### numBuffers

          protected int numBuffers

      The number of buffers

    - #### caps

          protected BufferCapabilities caps

      The buffering capabilities

    - #### drawBuffer

          protected Image drawBuffer

      The drawing buffer

    - #### drawVBuffer

          protected VolatileImage drawVBuffer

      The drawing buffer as a volatile image

    - #### validatedContents

          protected boolean validatedContents

      Whether or not the drawing buffer has been recently restored from a lost state.

  - ### Constructor Detail

    - #### FlipBufferStrategy

          protected FlipBufferStrategy​(int numBuffers,
                                       BufferCapabilities caps)
                                throws AWTException

      Creates a new flipping buffer strategy for this component. The component must be a `Canvas` or `Window` or `Applet`.
      Parameters:
        `numBuffers` - the number of buffers
        `caps` - the capabilities of the buffers
      Throws:
        `AWTException` - if the capabilities supplied could not be supported or met
        `ClassCastException` - if the component is not a canvas or window.
        `IllegalStateException` - if the component has no peer
        `IllegalArgumentException` - if `numBuffers` is less than two, or if `BufferCapabilities.isPageFlipping` is not `true`.
      See Also:
        `Canvas`, `Window`, `Applet`, `createBuffers(int, BufferCapabilities)`

  - ### Method Detail

    - #### createBuffers

          protected void createBuffers​(int numBuffers,
                                       BufferCapabilities caps)
                                throws AWTException

      Creates one or more complex, flipping buffers with the given capabilities.
      Parameters:
        `numBuffers` - number of buffers to create; must be greater than one
        `caps` - the capabilities of the buffers. `BufferCapabilities.isPageFlipping` must be `true`.
      Throws:
        `AWTException` - if the capabilities supplied could not be supported or met
        `IllegalStateException` - if the component has no peer
        `IllegalArgumentException` - if numBuffers is less than two, or if `BufferCapabilities.isPageFlipping` is not `true`.
      See Also:
        `BufferCapabilities.isPageFlipping()`

    - #### getBackBuffer

          protected Image getBackBuffer()

      Returns:
        direct access to the back buffer, as an image.
      Throws:
        `IllegalStateException` - if the buffers have not yet been created

    - #### flip

          protected void flip​(BufferCapabilities.FlipContents flipAction)

      Flipping moves the contents of the back buffer to the front buffer, either by copying or by moving the video pointer.
      Parameters:
        `flipAction` - an integer value describing the flipping action for the contents of the back buffer. This should be one of the values of the `BufferCapabilities.FlipContents` property.
      Throws:
        `IllegalStateException` - if the buffers have not yet been created
      See Also:
        `BufferCapabilities.getFlipContents()`

    - #### destroyBuffers

          protected void destroyBuffers()

      Destroys the buffers created through this object

    - #### getCapabilities

          public BufferCapabilities getCapabilities()

      Description copied from class: `BufferStrategy`
      Returns the `BufferCapabilities` for this `BufferStrategy`.
      Specified by:
        `getCapabilities` in class `BufferStrategy`
      Returns:
        the buffering capabilities of this strategy

    - #### getDrawGraphics

          public Graphics getDrawGraphics()

      Description copied from class: `BufferStrategy`
      Creates a graphics context for the drawing buffer. This method may not be synchronized for performance reasons; use of this method by multiple threads should be handled at the application level. Disposal of the graphics object obtained must be handled by the application.
      Specified by:
        `getDrawGraphics` in class `BufferStrategy`
      Returns:
        the graphics on the drawing buffer. This method may not be synchronized for performance reasons; use of this method by multiple threads should be handled at the application level. Disposal of the graphics object must be handled by the application.

    - #### revalidate

          protected void revalidate()

      Restore the drawing buffer if it has been lost

    - #### contentsLost

          public boolean contentsLost()

      Description copied from class: `BufferStrategy`
      Returns whether the drawing buffer was lost since the last call to `getDrawGraphics`. Since the buffers in a buffer strategy are usually type `VolatileImage`, they may become lost. For a discussion on lost buffers, see `VolatileImage`.
      Specified by:
        `contentsLost` in class `BufferStrategy`
      Returns:
        whether the drawing buffer was lost since the last call to `getDrawGraphics`
      See Also:
        `VolatileImage`

    - #### contentsRestored

          public boolean contentsRestored()

      Description copied from class: `BufferStrategy`
      Returns whether the drawing buffer was recently restored from a lost state and reinitialized to the default background color (white). Since the buffers in a buffer strategy are usually type `VolatileImage`, they may become lost. If a surface has been recently restored from a lost state since the last call to `getDrawGraphics`, it may require repainting. For a discussion on lost buffers, see `VolatileImage`.
      Specified by:
        `contentsRestored` in class `BufferStrategy`
      Returns:
        whether the drawing buffer was recently restored from a lost state and reinitialized to the default background color (white)
      See Also:
        `VolatileImage`

    - #### show

          public void show()

      Makes the next available buffer visible by either blitting or flipping.
      Specified by:
        `show` in class `BufferStrategy`

    - #### dispose

          public void dispose()

      Releases system resources currently consumed by this `BufferStrategy` and removes it from the associated Component. After invoking this method, `getBufferStrategy` will return null. Trying to use a `BufferStrategy` after it has been disposed will result in undefined behavior.
      Overrides:
        `dispose` in class `BufferStrategy`
      Since:
        1.6
      See Also:
        `Window.createBufferStrategy(int)`, `Canvas.createBufferStrategy(int)`, `Window.getBufferStrategy()`, `Canvas.getBufferStrategy()`