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()`
Provides direct access to the back buffer as an image.
`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 Details

### 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 Details

### 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 Details

### 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()
Provides direct access to the back buffer as an image.

Returns:
  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()`