# Class LC

java.lang.Object
com.codename1.ui.layouts.mig.LC

public final class LC extends java.lang.Object
Contains the constraints for an instance of the `LC` layout manager.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `LC()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `LC`
  `align(String ax, String ay)`
  Sets both the alignX and alignY as the same time.
  `LC`
  `alignX(String align)`
  Same functionality as `setAlignX(ConstraintParser.parseUnitValueOrAlign(unitValue, true))` only this method returns `this` for chaining multiple calls.
  `LC`
  `alignY(String align)`
  Same functionality as `setAlignY(ConstraintParser.parseUnitValueOrAlign(align, false))` only this method returns `this` for chaining multiple calls.
  `LC`
  `bottomToTop()`
  Same functionality as calling `#setTopToBottom(boolean)` with `false` only this method returns `this` for chaining multiple calls.
  `LC`
  `debug()`
  Calls `#debug(int)` with 300 as an argument.
  `LC`
  `debug(int repaintMillis)`
  Same functionality as `repaintMillis)` only this method returns `this` for chaining multiple calls.
  `LC`
  `fill()`
  Same functionality as calling `#setFillX(boolean)` with `true` and `#setFillY(boolean)` with `true` conmbined.T his method returns `this` for chaining multiple calls.
  `LC`
  `fillX()`
  Same functionality as calling `#setFillX(boolean)` with `true` only this method returns `this` for chaining multiple calls.
  `LC`
  `fillY()`
  Same functionality as calling `#setFillY(boolean)` with `true` only this method returns `this` for chaining multiple calls.
  `LC`
  `flowX()`
  Same functionality as calling `#setFlowX(boolean)` with `true` only this method returns `this` for chaining multiple calls.
  `LC`
  `flowY()`
  Same functionality as calling `#setFlowX(boolean)` with `false` only this method returns `this` for chaining multiple calls.
  `UnitValue`
  `getAlignX()`
  If the laid out components' bounds in total is less than the final size of the container these align values will be used to align the components in the parent.
  `UnitValue`
  `getAlignY()`
  If the laid out components' bounds in total is less than the final size of the container these align values will be used to align the components in the parent.
  `int`
  `getDebugMillis()`
  If `> 0` the debug decorations will be repainted every `millis`.
  `BoundSize`
  `getGridGapX()`
  If non-`null` (`null` is default) these value will be used as the default gaps between the columns in the grid.
  `BoundSize`
  `getGridGapY()`
  If non-`null` (`null` is default) these value will be used as the default gaps between the rows in the grid.
  `BoundSize`
  `getHeight()`
  Returns the minimum/preferred/maximum size for the container that this layout constraint is set for.
  `int`
  `getHideMode()`
  How a component that is hidden (not visible) should be treated by default.
  `UnitValue[]`
  `getInsets()`
  The insets for the layed out panel.
  `Boolean`
  `getLeftToRight()`
  If the layout should be forced to be left-to-right or right-to-left.
  `BoundSize`
  `getPackHeight()`
  Returns the "pack height" for the window that this container is located in.
  `float`
  `getPackHeightAlign()`
  If there is a resize of the window due to packing (see `#setPackHeight(BoundSize)` this value, which is between 0f and 1f, decides where the extra/superfluous size is placed.
  `BoundSize`
  `getPackWidth()`
  Returns the "pack width" for the window that this container is located in.
  `float`
  `getPackWidthAlign()`
  If there is a resize of the window due to packing (see `#setPackHeight(BoundSize)` this value, which is between 0f and 1f, decides where the extra/superfluous size is placed.
  `BoundSize`
  `getWidth()`
  Returns the minimum/preferred/maximum size for the container that this layout constraint is set for.
  `int`
  `getWrapAfter()`
  Returns after what cell the grid should always auto wrap.
  `LC`
  `gridGap(String gapx, String gapy)`
  Sets both grid gaps at the same time.
  `LC`
  `gridGapX(String boundsSize)`
  Same functionality as `setGridGapX(ConstraintParser.parseBoundSize(boundsSize, true, true))` only this method returns `this` for chaining multiple calls.
  `LC`
  `gridGapY(String boundsSize)`
  Same functionality as `setGridGapY(ConstraintParser.parseBoundSize(boundsSize, true, false))` only this method returns `this` for chaining multiple calls.
  `LC`
  `height(String height)`
  The height for the container as a min and/or preferred and/or maximum height.
  `LC`
  `hideMode(int mode)`
  Same functionality as `mode)` only this method returns `this` for chaining multiple calls.
  `LC`
  `insets(String s)`
  Same functionality as `setInsets(ConstraintParser.parseInsets(s, true))`.
  `LC`
  `insets(String top, String left, String bottom, String right)`
  Sets the different insets (expressed as a `UnitValue`s, e.g. "10px" or "20mm") for the corresponding sides.
  `LC`
  `insetsAll(String allSides)`
  Sets the same inset (expressed as a `UnitValue`, e.g. "10px" or "20mm") all around.
  `boolean`
  `isFillX()`
  If the layout should always claim the whole bounds of the laid out container even if the preferred size is smaller.
  `boolean`
  `isFillY()`
  If the layout should always claim the whole bounds of the laid out container even if the preferred size is smaller.
  `boolean`
  `isFlowX()`
  The default flow direction.
  `boolean`
  `isNoCache()`
  If components have sizes or positions linked to the bounds of the parent in some way (as for instance the `"%"` unit has) the cache must be turned off for the panel.
  `boolean`
  `isNoGrid()`
  If the whole layout should be non grid based.
  `boolean`
  `isTopToBottom()`
  If the layout should go from the default top-to-bottom in the grid instead of the optinal bottom-to-top.
  `boolean`
  `isVisualPadding()`
  If visual padding should be automatically used and compensated for by this layout instance.
  `LC`
  `leftToRight(boolean b)`
  Same functionality as `#setLeftToRight(Boolean)` only this method returns `this` for chaining multiple calls.
  `LC`
  `maxHeight(String height)`
  The maximum height for the container.
  `LC`
  `maxWidth(String width)`
  The maximum width for the container.
  `LC`
  `minHeight(String height)`
  The minimum height for the container.
  `LC`
  `minWidth(String width)`
  The minimum width for the container.
  `LC`
  `noCache()`
  Same functionality as calling `#setNoCache(boolean)` with `true` only this method returns `this` for chaining multiple calls.
  `LC`
  `noGrid()`
  Same functionality as calling `#setNoGrid(boolean)` with `true` only this method returns `this` for chaining multiple calls.
  `LC`
  `noVisualPadding()`
  Same functionality as calling `#setVisualPadding(boolean)` with `false` only this method returns `this` for chaining multiple calls.
  `LC`
  `pack()`
  Short for, and thus same as, `.pack("pref", "pref")`.
  `LC`
  `pack(String width, String height)`
  Sets the pack width and height.
  `LC`
  `packAlign(float alignX, float alignY)`
  Sets the pack width and height alignment.
  `LC`
  `rightToLeft()`
  Same functionality as setLeftToRight(false) only this method returns `this` for chaining multiple calls.
  `void`
  `setAlignX(UnitValue uv)`
  If the laid out components' bounds in total is less than the final size of the container these align values will be used to align the components in the parent.
  `void`
  `setAlignY(UnitValue uv)`
  If the laid out components' bounds in total is less than the final size of the container these align values will be used to align the components in the parent.
  `void`
  `setDebugMillis(int millis)`
  If `> 0` the debug decorations will be repainted every `millis`.
  `void`
  `setFillX(boolean b)`
  If the layout should always claim the whole bounds of the laid out container even if the preferred size is smaller.
  `void`
  `setFillY(boolean b)`
  If the layout should always claim the whole bounds of the laid out container even if the preferred size is smaller.
  `void`
  `setFlowX(boolean b)`
  The default flow direction.
  `void`
  `setGridGapX(BoundSize x)`
  If non-`null` (`null` is default) these value will be used as the default gaps between the columns in the grid.
  `void`
  `setGridGapY(BoundSize y)`
  If non-`null` (`null` is default) these value will be used as the default gaps between the rows in the grid.
  `void`
  `setHeight(BoundSize size)`
  Sets the minimum/preferred/maximum size for the container that this layout constraint is set for.
  `void`
  `setHideMode(int mode)`
  How a component that is hidden (not visible) should be treated.
  `void`
  `setInsets(UnitValue[] ins)`
  The insets for the layed out panel.
  `void`
  `setLeftToRight(Boolean b)`
  If the layout should be forced to be left-to-right or right-to-left.
  `void`
  `setNoCache(boolean b)`
  If components have sizes or positions linked to the bounds of the parent in some way (as for instance the `"%"` unit has) the cache must be turned off for the panel.
  `void`
  `setNoGrid(boolean b)`
  If the whole layout should be non grid based.
  `void`
  `setPackHeight(BoundSize size)`
  Sets the "pack height" for the window that this container is located in.
  `void`
  `setPackHeightAlign(float align)`
  If there is a resize of the window due to packing (see `#setPackHeight(BoundSize)` this value, which is between 0f and 1f, decides where the extra/superfluous size is placed. 0f means that the window will resize so that the upper part moves up and the lower side stays in the same place. 0.5f will expand/reduce the window equally upwards and downwards. 1f will do the opposite of 0f of course.
  `void`
  `setPackWidth(BoundSize size)`
  Sets the "pack width" for the window that this container is located in.
  `void`
  `setPackWidthAlign(float align)`
  If there is a resize of the window due to packing (see `#setPackHeight(BoundSize)` this value, which is between 0f and 1f, decides where the extra/superfluous size is placed. 0f means that the window will resize so that the left part moves left and the right side stays in the same place. 0.5f will expand/reduce the window equally to the right and lefts. 1f will do the opposite of 0f of course.
  `void`
  `setTopToBottom(boolean b)`
  If the layout should go from the default top-to-bottom in the grid instead of the optinal bottom-to-top.
  `void`
  `setVisualPadding(boolean b)`
  If visual padding should be automatically used and compensated for by this layout instance.
  `void`
  `setWidth(BoundSize size)`
  Sets the minimum/preferred/maximum size for the container that this layout constraint is set for.
  `void`
  `setWrapAfter(int count)`
  Sets after what cell the grid should always auto wrap.
  `LC`
  `topToBottom()`
  Same functionality as calling `#setTopToBottom(boolean)` with `true` only this method returns `this` for chaining multiple calls.
  `LC`
  `width(String width)`
  The width for the container as a min and/or preferred and/or maximum width.
  `LC`
  `wrap()`
  Sets a wrap after the number of columns/rows that is defined in the `net.miginfocom.layout.AC`.
  `LC`
  `wrapAfter(int count)`
  Same functionality as `#setWrapAfter(int)` only this method returns `this` for chaining multiple calls.

  ### Methods inherited from class java.lang.Object

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

- ## Constructor Details

  - ### LC

    public LC()

- ## Method Details

  - ### isNoCache

    public boolean isNoCache()

    If components have sizes or positions linked to the bounds of the parent in some way (as for instance the `"%"` unit has) the cache must be turned off for the panel. If components does not get the correct or expected size or position try to set this property to `true`.

    ###### Returns

    `true` means no cache and slightly slower layout.

  - ### setNoCache

    public void setNoCache(boolean b)

    If components have sizes or positions linked to the bounds of the parent in some way (as for instance the `"%"` unit has) the cache must be turned off for the panel. If components does not get the correct or expected size or position try to set this property to `true`.

    ###### Parameters

    - `b`: `true` means no cache and slightly slower layout.

  - ### getAlignX

    public UnitValue getAlignX()

    If the laid out components' bounds in total is less than the final size of the container these align values will be used to align the components in the parent. `null` is default and that means top/left alignment. The relative distances between the components will not be affected by this property.

    ###### Returns

    The current alignment.

  - ### setAlignX

    public void setAlignX(UnitValue uv)

    If the laid out components' bounds in total is less than the final size of the container these align values will be used to align the components in the parent. `null` is default and that means top/left alignment. The relative distances between the components will not be affected by this property.

    ###### Parameters

    - `uv`: The new alignment. Use `boolean)` to create the `UnitValue`. May be `null`.

  - ### getAlignY

    public UnitValue getAlignY()

    If the laid out components' bounds in total is less than the final size of the container these align values will be used to align the components in the parent. `null` is default and that means top/left alignment. The relative distances between the components will not be affected by this property.

    ###### Returns

    The current alignment.

  - ### setAlignY

    public void setAlignY(UnitValue uv)

    If the laid out components' bounds in total is less than the final size of the container these align values will be used to align the components in the parent. `null` is default and that means top/left alignment. The relative distances between the components will not be affected by this property.

    ###### Parameters

    - `uv`: The new alignment. Use `boolean)` to create the `UnitValue`. May be `null`.

  - ### getDebugMillis

    public int getDebugMillis()

    If `> 0` the debug decorations will be repainted every `millis`. No debug information if `<= 0` (default).

    ###### Returns

    The current debug repaint interval.

  - ### setDebugMillis

    public void setDebugMillis(int millis)

    If `> 0` the debug decorations will be repainted every `millis`. No debug information if `<= 0` (default).

    ###### Parameters

    - `millis`: The new debug repaint interval.

  - ### isFillX

    public boolean isFillX()

    If the layout should always claim the whole bounds of the laid out container even if the preferred size is smaller.

    ###### Returns

    `true` means fill. `false` is default.

  - ### setFillX

    public void setFillX(boolean b)

    If the layout should always claim the whole bounds of the laid out container even if the preferred size is smaller.

    ###### Parameters

    - `b`: `true` means fill. `false` is default.

  - ### isFillY

    public boolean isFillY()

    If the layout should always claim the whole bounds of the laid out container even if the preferred size is smaller.

    ###### Returns

    `true` means fill. `false` is default.

  - ### setFillY

    public void setFillY(boolean b)

    If the layout should always claim the whole bounds of the laid out container even if the preferred size is smaller.

    ###### Parameters

    - `b`: `true` means fill. `false` is default.

  - ### isFlowX

    public boolean isFlowX()

    The default flow direction. Normally (which is `true`) this is horizontal and that means that the "next" component will be put in the cell to the right (or to the left if left-to-right is false).

    ###### Returns

    `true` is the default flow horizontally.

    ###### See also

    - #setLeftToRight(Boolean)

  - ### setFlowX

    public void setFlowX(boolean b)

    The default flow direction. Normally (which is `true`) this is horizontal and that means that the "next" component will be put in the cell to the right (or to the left if left-to-right is false).

    ###### Parameters

    - `b`: `true` is the default flow horizontally.

    ###### See also

    - #setLeftToRight(Boolean)

  - ### getGridGapX

    public BoundSize getGridGapX()

    If non-`null` (`null` is default) these value will be used as the default gaps between the columns in the grid.

    ###### Returns

    The default grid gap between columns in the grid. `null` if the platform default is used.

  - ### setGridGapX

    public void setGridGapX(BoundSize x)

    If non-`null` (`null` is default) these value will be used as the default gaps between the columns in the grid.

    ###### Parameters

    - `x`: The default grid gap between columns in the grid. If `null` the platform default is used.

  - ### getGridGapY

    public BoundSize getGridGapY()

    If non-`null` (`null` is default) these value will be used as the default gaps between the rows in the grid.

    ###### Returns

    The default grid gap between rows in the grid. `null` if the platform default is used.

  - ### setGridGapY

    public void setGridGapY(BoundSize y)

    If non-`null` (`null` is default) these value will be used as the default gaps between the rows in the grid.

    ###### Parameters

    - `y`: The default grid gap between rows in the grid. If `null` the platform default is used.

  - ### getHideMode

    public int getHideMode()

    How a component that is hidden (not visible) should be treated by default.

    ###### Returns

    Returns:

      The mode:

      0 == Normal. Bounds will be calculated as if the component was visible.

      1 == If hidden the size will be 0, 0 but the gaps remain.

      2 == If hidden the size will be 0, 0 and gaps set to zero.

      3 == If hidden the component will be disregarded completely and not take up a cell in the grid..

  - ### setHideMode

    public void setHideMode(int mode)

    How a component that is hidden (not visible) should be treated.

    ###### Parameters

    - `mode`: @param mode The mode:

    0 == Normal. Bounds will be calculated as if the component was visible.

    1 == If hidden the size will be 0, 0 but the gaps remain.

    2 == If hidden the size will be 0, 0 and gaps set to zero.

    3 == If hidden the component will be disregarded completely and not take up a cell in the grid..

  - ### getInsets

    public UnitValue[] getInsets()

    The insets for the layed out panel. The insets will be an empty space around the components in the panel. `null` values means that the default panel insets for the platform is used. See `net.miginfocom.layout.UnitValue, net.miginfocom.layout.UnitValue, net.miginfocom.layout.UnitValue)`.

    ###### Returns

    The insets. Of length 4 (top, left, bottom, right) or `null`. The elements (1 to 4) may be `null`. The array is a copy and can be used freely.

    ###### See also

    - net.miginfocom.layout.ConstraintParser#parseInsets(String, boolean)

  - ### setInsets

    public void setInsets(UnitValue[] ins)

    The insets for the layed out panel. The insets will be an empty space around the components in the panel. `null` values means that the default panel insets for the platform is used. See `net.miginfocom.layout.UnitValue, net.miginfocom.layout.UnitValue, net.miginfocom.layout.UnitValue)`.

    ###### Parameters

    - `ins`: @param ins The new insets. Must be of length 4 (top, left, bottom, right) or `null`. The elements (1 to 4) may be `null` to use the platform default for that side. The array is copied for storage.

    ###### See also

    - net.miginfocom.layout.ConstraintParser#parseInsets(String, boolean)

  - ### getLeftToRight

    public Boolean getLeftToRight()

    If the layout should be forced to be left-to-right or right-to-left. A value of `null` is default and means that this will be picked up from the `java.util.Locale` that the container being layed out is reporting.

    ###### Returns

    Returns:
      `Boolean.TRUE` if force left-to-right. `Boolean.FALSE` if force tight-to-left. `null` for the default "let the current Locale decide".

  - ### setLeftToRight

    public void setLeftToRight(Boolean b)

    If the layout should be forced to be left-to-right or right-to-left. A value of `null` is default and means that this will be picked up from the `java.util.Locale` that the container being layed out is reporting.

    ###### Parameters

    - `b`: @param b `Boolean.TRUE` to force left-to-right. `Boolean.FALSE` to force tight-to-left. `null` for the default "let the current Locale decide".

  - ### isNoGrid

    public boolean isNoGrid()

    If the whole layout should be non grid based. It is the same as setting the "nogrid" property on every row/column in the grid.

    ###### Returns

    `true` means not grid based. `false` is default.

  - ### setNoGrid

    public void setNoGrid(boolean b)

    If the whole layout should be non grid based. It is the same as setting the "nogrid" property on every row/column in the grid.

    ###### Parameters

    - `b`: `true` means no grid. `false` is default.

  - ### isTopToBottom

    public boolean isTopToBottom()

    If the layout should go from the default top-to-bottom in the grid instead of the optinal bottom-to-top.

    ###### Returns

    `true` for the default top-to-bottom.

  - ### setTopToBottom

    public void setTopToBottom(boolean b)

    If the layout should go from the default top-to-bottom in the grid instead of the optinal bottom-to-top.

    ###### Parameters

    - `b`: `true` for the default top-to-bottom.

  - ### isVisualPadding

    public boolean isVisualPadding()

    If visual padding should be automatically used and compensated for by this layout instance.

    ###### Returns

    `true` if visual padding.

  - ### setVisualPadding

    public void setVisualPadding(boolean b)

    If visual padding should be automatically used and compensated for by this layout instance.

    ###### Parameters

    - `b`: `true` turns on visual padding.

  - ### getWrapAfter

    public int getWrapAfter()

    Returns after what cell the grid should always auto wrap.

    ###### Returns

    Returns:
      After what cell the grid should always auto wrap. If `0` the number of columns/rows in the `net.miginfocom.layout.AC` is used. `LayoutUtil.INF` is used for no auto wrap.

  - ### setWrapAfter

    public void setWrapAfter(int count)

    Sets after what cell the grid should always auto wrap.

    ###### Parameters

    - `count`: @param count After what cell the grid should always auto wrap. If `0` the number of columns/rows in the `net.miginfocom.layout.AC` is used. `LayoutUtil.INF` is used for no auto wrap.

  - ### getPackWidth

    public BoundSize getPackWidth()

    Returns the "pack width" for the window that this container is located in. When the size of this container changes the size of the window will be corrected to be within this BoundsSize. It can be used to set the minimum and/or maximum size of the window as well as the size window should optimally get. This optimal size is normally its "preferred" size which is why "preferred" is the normal value to set here.

    ":push" can be appended to the bound size to only push the size bigger and never shrink it if the preferred size gets smaller.

    E.g. "pref", "100:pref", "pref:700", "300::700", "pref:push"

    ###### Returns

    The current value. Never `null`. Check if not set with `.isUnset()`.

    ###### Since

    3.5

  - ### setPackWidth

    public void setPackWidth(BoundSize size)

    Sets the "pack width" for the window that this container is located in. When the size of this container changes the size of the window will be corrected to be within this BoundsSize. It can be used to set the minimum and/or maximum size of the window as well as the size window should optimally get. This optimal size is normally its "preferred" size which is why "preferred" is the normal value to set here.

    ":push" can be appended to the bound size to only push the size bigger and never shrink it if the preferred size gets smaller.

    E.g. "pref", "100:pref", "pref:700", "300::700", "pref:push"

    ###### Parameters

    - `size`: The new pack size. If `null` it will be corrected to an "unset" BoundSize.

    ###### Since

    3.5

  - ### getPackHeight

    public BoundSize getPackHeight()

    Returns the "pack height" for the window that this container is located in. When the size of this container changes the size of the window will be corrected to be within this BoundsSize. It can be used to set the minimum and/or maximum size of the window as well as the size window should optimally get. This optimal size is normally its "preferred" size which is why "preferred" is the normal value to set here.

    ":push" can be appended to the bound size to only push the size bigger and never shrink it if the preferred size gets smaller.

    E.g. "pref", "100:pref", "pref:700", "300::700", "pref:push"

    ###### Returns

    The current value. Never `null`. Check if not set with `.isUnset()`.

    ###### Since

    3.5

  - ### setPackHeight

    public void setPackHeight(BoundSize size)

    Sets the "pack height" for the window that this container is located in. When the size of this container changes the size of the window will be corrected to be within this BoundsSize. It can be used to set the minimum and/or maximum size of the window as well as the size window should optimally get. This optimal size is normally its "preferred" size which is why "preferred" is the normal value to set here.

    ":push" can be appended to the bound size to only push the size bigger and never shrink it if the preferred size gets smaller.

    E.g. "pref", "100:pref", "pref:700", "300::700", "pref:push"

    ###### Parameters

    - `size`: The new pack size. If `null` it will be corrected to an "unset" BoundSize.

    ###### Since

    3.5

  - ### getPackHeightAlign

    public float getPackHeightAlign()

    If there is a resize of the window due to packing (see `#setPackHeight(BoundSize)` this value, which is between 0f and 1f, decides where the extra/superfluous size is placed. 0f means that the window will resize so that the upper part moves up and the lower side stays in the same place. 0.5f will expand/reduce the window equally upwards and downwards. 1f will do the opposite of 0f of course.

    ###### Returns

    The pack alignment. Always between 0f and 1f, inclusive.

    ###### Since

    3.5

  - ### setPackHeightAlign

    public void setPackHeightAlign(float align)

    If there is a resize of the window due to packing (see `#setPackHeight(BoundSize)` this value, which is between 0f and 1f, decides where the extra/superfluous size is placed. 0f means that the window will resize so that the upper part moves up and the lower side stays in the same place. 0.5f will expand/reduce the window equally upwards and downwards. 1f will do the opposite of 0f of course.

    ###### Parameters

    - `align`: The pack alignment. Always between 0f and 1f, inclusive. Values outside this will be truncated.

    ###### Since

    3.5

  - ### getPackWidthAlign

    public float getPackWidthAlign()

    If there is a resize of the window due to packing (see `#setPackHeight(BoundSize)` this value, which is between 0f and 1f, decides where the extra/superfluous size is placed. 0f means that the window will resize so that the left part moves left and the right side stays in the same place. 0.5f will expand/reduce the window equally to the right and lefts. 1f will do the opposite of 0f of course.

    ###### Returns

    The pack alignment. Always between 0f and 1f, inclusive.

    ###### Since

    3.5

  - ### setPackWidthAlign

    public void setPackWidthAlign(float align)

    If there is a resize of the window due to packing (see `#setPackHeight(BoundSize)` this value, which is between 0f and 1f, decides where the extra/superfluous size is placed. 0f means that the window will resize so that the left part moves left and the right side stays in the same place. 0.5f will expand/reduce the window equally to the right and lefts. 1f will do the opposite of 0f of course.

    ###### Parameters

    - `align`: The pack alignment. Always between 0f and 1f, inclusive. Values outside this will be truncated.

    ###### Since

    3.5

  - ### getWidth

    public BoundSize getWidth()

    Returns the minimum/preferred/maximum size for the container that this layout constraint is set for. Any of these sizes that is not `null` will be returned directly instead of determining the corresponding size through asking the components in this container.

    ###### Returns

    Returns:

      The width for the container that this layout constraint is set for. Not `null` but all sizes can be `null`.

      ###### Since

      3.5

  - ### setWidth

    public void setWidth(BoundSize size)

    Sets the minimum/preferred/maximum size for the container that this layout constraint is set for. Any of these sizes that is not `null` will be returned directly instead of determining the corresponding size through asking the components in this container.

    ###### Parameters

    - `size`: @param size The width for the container that this layout constraint is set for. `null` is translated to a bound size containing only null sizes.

    ###### Since

    3.5

  - ### getHeight

    public BoundSize getHeight()

    Returns the minimum/preferred/maximum size for the container that this layout constraint is set for. Any of these sizes that is not `null` will be returned directly instead of determining the corresponding size through asking the components in this container.

    ###### Returns

    Returns:

      The height for the container that this layout constraint is set for. Not `null` but all sizes can be `null`.

      ###### Since

      3.5

  - ### setHeight

    public void setHeight(BoundSize size)

    Sets the minimum/preferred/maximum size for the container that this layout constraint is set for. Any of these sizes that is not `null` will be returned directly instead of determining the corresponding size through asking the components in this container.

    ###### Parameters

    - `size`: @param size The height for the container that this layout constraint is set for. `null` is translated to a bound size containing only null sizes.

    ###### Since

    3.5

  - ### pack

    public LC pack()

    Short for, and thus same as, `.pack("pref", "pref")`.

    Same functionality as `#setPackHeight(BoundSize)` and `#setPackWidth(net.miginfocom.layout.BoundSize)` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

    ###### Since

    3.5

  - ### pack

    public LC pack(String width, String height)

    Sets the pack width and height.

    Same functionality as `#setPackHeight(BoundSize)` and `#setPackWidth(net.miginfocom.layout.BoundSize)` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Parameters

    - `width`: The pack width. May be `null`.

    - `height`: The pack height. May be `null`.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

    ###### Since

    3.5

  - ### packAlign

    public LC packAlign(float alignX, float alignY)

    Sets the pack width and height alignment.

    Same functionality as `#setPackHeightAlign(float)` and `#setPackWidthAlign(float)` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Parameters

    - `alignX`: The pack width alignment. 0.5f is default.

    - `alignY`: The pack height alignment. 0.5f is default.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

    ###### Since

    3.5

  - ### wrap

    public LC wrap()

    Sets a wrap after the number of columns/rows that is defined in the `net.miginfocom.layout.AC`.

    Same functionality as calling `#setWrapAfter(int)` with `0` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

  - ### wrapAfter

    public LC wrapAfter(int count)

    Same functionality as `#setWrapAfter(int)` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Parameters

    - `count`: After what cell the grid should always auto wrap. If `0` the number of columns/rows in the

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

  - ### noCache

    public LC noCache()

    Same functionality as calling `#setNoCache(boolean)` with `true` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

  - ### flowY

    public LC flowY()

    Same functionality as calling `#setFlowX(boolean)` with `false` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

  - ### flowX

    public LC flowX()

    Same functionality as calling `#setFlowX(boolean)` with `true` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

  - ### fill

    public LC fill()

    Same functionality as calling `#setFillX(boolean)` with `true` and `#setFillY(boolean)` with `true` conmbined.T his method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

  - ### fillX

    public LC fillX()

    Same functionality as calling `#setFillX(boolean)` with `true` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

  - ### fillY

    public LC fillY()

    Same functionality as calling `#setFillY(boolean)` with `true` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

  - ### leftToRight

    public LC leftToRight(boolean b)

    Same functionality as `#setLeftToRight(Boolean)` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Parameters

    - `b`: `true` for forcing left-to-right. `false` for forcing right-to-left.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

  - ### rightToLeft

    public LC rightToLeft()

    Same functionality as setLeftToRight(false) only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

    ###### Since

    3.7.2

  - ### bottomToTop

    public LC bottomToTop()

    Same functionality as calling `#setTopToBottom(boolean)` with `false` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

  - ### topToBottom

    public LC topToBottom()

    Same functionality as calling `#setTopToBottom(boolean)` with `true` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

    ###### Since

    3.7.2

  - ### noGrid

    public LC noGrid()

    Same functionality as calling `#setNoGrid(boolean)` with `true` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

  - ### noVisualPadding

    public LC noVisualPadding()

    Same functionality as calling `#setVisualPadding(boolean)` with `false` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

  - ### insetsAll

    public LC insetsAll(String allSides)

    Sets the same inset (expressed as a `UnitValue`, e.g. "10px" or "20mm") all around.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Parameters

    - `allSides`: @param allSides The unit value to set for all sides. May be `null` which means that the default panel insets for the platform is used.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

    ###### See also

    - #setInsets(UnitValue[])

  - ### insets

    public LC insets(String s)

    Same functionality as `setInsets(ConstraintParser.parseInsets(s, true))`. This method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Parameters

    - `s`: The string to parse. E.g. "10 10 10 10" or "20". If less than 4 groups the last will be used for the missing.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

    ###### See also

    - #setInsets(UnitValue[])

  - ### insets

    public LC insets(String top, String left, String bottom, String right)

    Sets the different insets (expressed as a `UnitValue`s, e.g. "10px" or "20mm") for the corresponding sides.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Parameters

    - `top`: @param top The top inset. E.g. "10px" or "10mm" or "related". May be `null` in which case the default inset for this side for the platform will be used.

    - `left`: @param left The left inset. E.g. "10px" or "10mm" or "related". May be `null` in which case the default inset for this side for the platform will be used.

    - `bottom`: @param bottom The bottom inset. E.g. "10px" or "10mm" or "related". May be `null` in which case the default inset for this side for the platform will be used.

    - `right`: @param right The right inset. E.g. "10px" or "10mm" or "related". May be `null` in which case the default inset for this side for the platform will be used.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

    ###### See also

    - #setInsets(UnitValue[])

  - ### alignX

    public LC alignX(String align)

    Same functionality as `setAlignX(ConstraintParser.parseUnitValueOrAlign(unitValue, true))` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Parameters

    - `align`: The align keyword or for instance "100px". E.g "left", "right", "leading" or "trailing".

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

    ###### See also

    - #setAlignX(UnitValue)

  - ### alignY

    public LC alignY(String align)

    Same functionality as `setAlignY(ConstraintParser.parseUnitValueOrAlign(align, false))` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Parameters

    - `align`: The align keyword or for instance "100px". E.g "top" or "bottom".

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

    ###### See also

    - #setAlignY(UnitValue)

  - ### align

    public LC align(String ax, String ay)

    Sets both the alignX and alignY as the same time.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Parameters

    - `ax`: The align keyword or for instance "100px". E.g "left", "right", "leading" or "trailing".

    - `ay`: The align keyword or for instance "100px". E.g "top" or "bottom".

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

    ###### See also

    - #alignX(String)

    - #alignY(String)

  - ### gridGapX

    public LC gridGapX(String boundsSize)

    Same functionality as `setGridGapX(ConstraintParser.parseBoundSize(boundsSize, true, true))` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Parameters

    - `boundsSize`: @param boundsSize The `BoundSize` of the gap. This is a minimum and/or preferred and/or maximum size. E.g. `"50:100:200"` or `"100px"`.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

    ###### See also

    - #setGridGapX(BoundSize)

  - ### gridGapY

    public LC gridGapY(String boundsSize)

    Same functionality as `setGridGapY(ConstraintParser.parseBoundSize(boundsSize, true, false))` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Parameters

    - `boundsSize`: @param boundsSize The `BoundSize` of the gap. This is a minimum and/or preferred and/or maximum size. E.g. `"50:100:200"` or `"100px"`.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

    ###### See also

    - #setGridGapY(BoundSize)

  - ### gridGap

    public LC gridGap(String gapx, String gapy)

    Sets both grid gaps at the same time. see `#gridGapX(String)` and `#gridGapY(String)`.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Parameters

    - `gapx`: @param gapx The `BoundSize` of the gap. This is a minimum and/or preferred and/or maximum size. E.g. `"50:100:200"` or `"100px"`.

    - `gapy`: @param gapy The `BoundSize` of the gap. This is a minimum and/or preferred and/or maximum size. E.g. `"50:100:200"` or `"100px"`.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

    ###### See also

    - #gridGapX(String)

    - #gridGapY(String)

  - ### debug

    public LC debug()

    Calls `#debug(int)` with 300 as an argument.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

    ###### See also

    - #setDebugMillis(int)

  - ### debug

    public LC debug(int repaintMillis)

    Same functionality as `repaintMillis)` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Parameters

    - `repaintMillis`: The new debug repaint interval.

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

    ###### See also

    - #setDebugMillis(int)

  - ### hideMode

    public LC hideMode(int mode)

    Same functionality as `mode)` only this method returns `this` for chaining multiple calls.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcomponents.com.

    ###### Parameters

    - `mode`: @param mode The mode:

    0 == Normal. Bounds will be calculated as if the component was visible.

    1 == If hidden the size will be 0, 0 but the gaps remain.

    2 == If hidden the size will be 0, 0 and gaps set to zero.

    3 == If hidden the component will be disregarded completely and not take up a cell in the grid..

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

    ###### See also

    - #setHideMode(int)

  - ### minWidth

    public LC minWidth(String width)

    The minimum width for the container. The value will override any value that is set on the container itself.

    For a more thorough explanation of what this constraint does see the white paper or Cheat Sheet at www.migcontainers.com.

    ###### Parameters

    - `width`: The width expressed as a `UnitValue`. E.g. "100px" or "200mm".

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

  - ### width

    public LC width(String width)

    The width for the container as a min and/or preferred and/or maximum width. The value will override any value that is set on the container itself.

    For a more thorough explanation of what this constraint does see the white paper or Cheat Sheet at www.migcontainers.com.

    ###### Parameters

    - `width`: The width expressed as a `BoundSize`. E.g. "50:100px:200mm" or "100px".

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

  - ### maxWidth

    public LC maxWidth(String width)

    The maximum width for the container. The value will override any value that is set on the container itself.

    For a more thorough explanation of what this constraint does see the white paper or Cheat Sheet at www.migcontainers.com.

    ###### Parameters

    - `width`: The width expressed as a `UnitValue`. E.g. "100px" or "200mm".

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

  - ### minHeight

    public LC minHeight(String height)

    The minimum height for the container. The value will override any value that is set on the container itself.

    For a more thorough explanation of what this constraint does see the white paper or Cheat Sheet at www.migcontainers.com.

    ###### Parameters

    - `height`: The height expressed as a `UnitValue`. E.g. "100px" or "200mm".

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

  - ### height

    public LC height(String height)

    The height for the container as a min and/or preferred and/or maximum height. The value will override any value that is set on the container itself.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcontainers.com.

    ###### Parameters

    - `height`: The height expressed as a `BoundSize`. E.g. "50:100px:200mm" or "100px".

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.

  - ### maxHeight

    public LC maxHeight(String height)

    The maximum height for the container. The value will override any value that is set on the container itself.

    For a more thorough explanation of what this constraint does see the white paper or cheat Sheet at www.migcontainers.com.

    ###### Parameters

    - `height`: The height expressed as a `UnitValue`. E.g. "100px" or "200mm".

    ###### Returns

    `this` so it is possible to chain calls. E.g. `new LayoutConstraint().noGrid().gap().fill()`.