# Class OverlayLayout

java.lang.Object
javax.swing.OverlayLayout

All Implemented Interfaces:
  `LayoutManager, LayoutManager2, Serializable`

public class OverlayLayout extends Object implements LayoutManager2, Serializable
A layout manager to arrange components over the top of each other. The requested size of the container will be the largest requested size of the children, taking alignment needs into consideration. The alignment is based upon what is needed to properly fit the children in the allocation area. The children will be placed such that their alignment points are all on top of each other.

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeans has been added to the `java.beans` package. Please see `XMLEncoder`.

Since:
  1.2

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `OverlayLayout(Container target)`
  Constructs a layout manager that performs overlay arrangement of the children.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addLayoutComponent(Component comp, Object constraints)`
  Adds the specified component to the layout, using the specified constraint object.
  `void`
  `addLayoutComponent(String name, Component comp)`
  Adds the specified component to the layout.
  `float`
  `getLayoutAlignmentX(Container target)`
  Returns the alignment along the x axis for the container.
  `float`
  `getLayoutAlignmentY(Container target)`
  Returns the alignment along the y axis for the container.
  `final Container`
  `getTarget()`
  Returns the container that uses this layout manager.
  `void`
  `invalidateLayout(Container target)`
  Indicates a child has changed its layout related information, which causes any cached calculations to be flushed.
  `void`
  `layoutContainer(Container target)`
  Called by the AWT when the specified container needs to be laid out.
  `Dimension`
  `maximumLayoutSize(Container target)`
  Returns the maximum dimensions needed to lay out the components contained in the specified target container.
  `Dimension`
  `minimumLayoutSize(Container target)`
  Returns the minimum dimensions needed to lay out the components contained in the specified target container.
  `Dimension`
  `preferredLayoutSize(Container target)`
  Returns the preferred dimensions for this layout given the components in the specified target container.
  `void`
  `removeLayoutComponent(Component comp)`
  Removes the specified component from the layout.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  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<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  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

  - ### OverlayLayout

    @ConstructorProperties("target") public OverlayLayout(Container target)
    Constructs a layout manager that performs overlay arrangement of the children. The layout manager created is dedicated to the given container.
    Parameters:
      `target` - the container to do layout against

- ## Method Details

  - ### getTarget

    public final Container getTarget()
    Returns the container that uses this layout manager.
    Returns:
      the container that uses this layout manager
    Since:
      1.6

  - ### invalidateLayout

    public void invalidateLayout(Container target)
    Indicates a child has changed its layout related information, which causes any cached calculations to be flushed.
    Specified by:
      `invalidateLayout` in interface `LayoutManager2`
    Parameters:
      `target` - the container

  - ### addLayoutComponent

    public void addLayoutComponent(String name, Component comp)
    Adds the specified component to the layout. Used by this class to know when to invalidate layout.
    Specified by:
      `addLayoutComponent` in interface `LayoutManager`
    Parameters:
      `name` - the name of the component
      `comp` - the component to be added

  - ### removeLayoutComponent

    public void removeLayoutComponent(Component comp)
    Removes the specified component from the layout. Used by this class to know when to invalidate layout.
    Specified by:
      `removeLayoutComponent` in interface `LayoutManager`
    Parameters:
      `comp` - the component to remove

  - ### addLayoutComponent

    public void addLayoutComponent(Component comp, Object constraints)
    Adds the specified component to the layout, using the specified constraint object. Used by this class to know when to invalidate layout.
    Specified by:
      `addLayoutComponent` in interface `LayoutManager2`
    Parameters:
      `comp` - the component to be added
      `constraints` - where/how the component is added to the layout.

  - ### preferredLayoutSize

    public Dimension preferredLayoutSize(Container target)
    Returns the preferred dimensions for this layout given the components in the specified target container. Recomputes the layout if it has been invalidated. Factors in the current inset setting returned by getInsets().
    Specified by:
      `preferredLayoutSize` in interface `LayoutManager`
    Parameters:
      `target` - the component which needs to be laid out
    Returns:
      a Dimension object containing the preferred dimensions
    See Also:
      - `minimumLayoutSize(Container)`

  - ### minimumLayoutSize

    public Dimension minimumLayoutSize(Container target)
    Returns the minimum dimensions needed to lay out the components contained in the specified target container. Recomputes the layout if it has been invalidated, and factors in the current inset setting.
    Specified by:
      `minimumLayoutSize` in interface `LayoutManager`
    Parameters:
      `target` - the component which needs to be laid out
    Returns:
      a Dimension object containing the minimum dimensions
    See Also:
      - `preferredLayoutSize(Container)`

  - ### maximumLayoutSize

    public Dimension maximumLayoutSize(Container target)
    Returns the maximum dimensions needed to lay out the components contained in the specified target container. Recomputes the layout if it has been invalidated, and factors in the inset setting returned by `getInset`.
    Specified by:
      `maximumLayoutSize` in interface `LayoutManager2`
    Parameters:
      `target` - the component that needs to be laid out
    Returns:
      a `Dimension` object containing the maximum dimensions
    See Also:
      - `preferredLayoutSize(Container)`

  - ### getLayoutAlignmentX

    public float getLayoutAlignmentX(Container target)
    Returns the alignment along the x axis for the container.
    Specified by:
      `getLayoutAlignmentX` in interface `LayoutManager2`
    Parameters:
      `target` - the container
    Returns:
      the alignment >= 0.0f && <= 1.0f

  - ### getLayoutAlignmentY

    public float getLayoutAlignmentY(Container target)
    Returns the alignment along the y axis for the container.
    Specified by:
      `getLayoutAlignmentY` in interface `LayoutManager2`
    Parameters:
      `target` - the container
    Returns:
      the alignment >= 0.0f && <= 1.0f

  - ### layoutContainer

    public void layoutContainer(Container target)
    Called by the AWT when the specified container needs to be laid out.
    Specified by:
      `layoutContainer` in interface `LayoutManager`
    Parameters:
      `target` - the container to lay out
    Throws:
      `AWTError` - if the target isn't the container specified to the constructor