MiGLayout Swing implementation providing constraint-based layout management for Java Swing applications
—
Structured constraint objects from the core module providing programmatic layout configuration as type-safe alternatives to string-based constraints. These classes enable detailed control over layout behavior, column/row specifications, and individual component positioning through fluent builder APIs.
Layout constraint object containing configuration for the entire layout manager instance with both property-based and fluent builder APIs.
/**
* Contains the constraints for an instance of the MigLayout layout manager.
* Provides programmatic alternative to string-based layout constraints.
*/
public class LC implements Externalizable {
/**
* Empty constructor creating default layout constraints.
*/
public LC();
}Direct property access methods for layout configuration.
// Cache control
public boolean isNoCache();
public void setNoCache(boolean b);
// Flow direction
public final boolean isFlowX();
public final void setFlowX(boolean b);
// Fill behavior
public final boolean isFillX();
public final void setFillX(boolean b);
public final boolean isFillY();
public final void setFillY(boolean b);
// Alignment
public final UnitValue getAlignX();
public final void setAlignX(UnitValue uv);
public final UnitValue getAlignY();
public final void setAlignY(UnitValue uv);
// Layout flow
public final boolean isTopToBottom();
public final void setTopToBottom(boolean b);
public final Boolean getLeftToRight();
public final void setLeftToRight(Boolean b);
// Visual padding
public final boolean isVisualPadding();
public final void setVisualPadding(boolean b);
// Grid behavior
public final boolean isNoGrid();
public final void setNoGrid(boolean b);
// Wrap behavior
public final int getWrapAfter();
public final void setWrapAfter(int count);
// Hide mode
public final int getHideMode();
public final void setHideMode(int mode);
// Debug support
public final int getDebugMillis();
public final void setDebugMillis(int millis);
// Insets
public final UnitValue[] getInsets();
public final void setInsets(UnitValue[] ins);
// Grid gaps
public final BoundSize getGridGapX();
public final void setGridGapX(BoundSize x);
public final BoundSize getGridGapY();
public final void setGridGapY(BoundSize y);
// Container sizing
public final BoundSize getWidth();
public final void setWidth(BoundSize size);
public final BoundSize getHeight();
public final void setHeight(BoundSize size);
// Pack sizing
public final BoundSize getPackWidth();
public final void setPackWidth(BoundSize size);
public final BoundSize getPackHeight();
public final void setPackHeight(BoundSize size);
public final float getPackWidthAlign();
public final void setPackWidthAlign(float align);
public final float getPackHeightAlign();
public final void setPackHeightAlign(float align);Chainable configuration methods returning this for method chaining.
// Basic layout
public final LC wrap();
public final LC wrapAfter(int count);
public final LC noCache();
public final LC flowX();
public final LC flowY();
public final LC fill();
public final LC fillX();
public final LC fillY();
public final LC leftToRight(boolean b);
public final LC rightToLeft();
public final LC topToBottom();
public final LC bottomToTop();
public final LC noGrid();
public final LC noVisualPadding();
// Pack sizing
public final LC pack();
public final LC pack(String width, String height);
public final LC packAlign(float alignX, float alignY);
// Container sizing
public final LC minWidth(String width);
public final LC width(String width);
public final LC maxWidth(String width);
public final LC minHeight(String height);
public final LC height(String height);
public final LC maxHeight(String height);
// Insets
public final LC insetsAll(String allSides);
public final LC insets(String s);
public final LC insets(String top, String left, String bottom, String right);
// Alignment
public final LC alignX(String align);
public final LC alignX(AlignX align);
public final LC alignY(String align);
public final LC alignY(AlignY align);
public final LC align(String ax, String ay);
// Grid gaps
public final LC gridGapX(String boundsSize);
public final LC gridGapY(String boundsSize);
public final LC gridGap(String gapx, String gapy);
// Debug
public final LC debug();
public final LC debug(int repaintMillis);
// Hide mode
public final LC hideMode(HideMode mode);
public final LC hideMode(int mode);Axis constraint object holding column or row constraints with fluent builder API for grid configuration.
/**
* A constraint that holds the column or row constraints for the grid.
* This class is a holder and builder for a number of DimConstraints.
*/
public class AC implements Externalizable {
/**
* Constructor creating instance that can be configured manually.
* Will be initialized with a default DimConstraint.
*/
public AC();
/**
* Returns the different DimConstraints that this object consists of.
* @return The different DimConstraints. A new array and never null.
*/
public final DimConstraint[] getConstraints();
/**
* Sets the different DimConstraints that this object should consist of.
* @param constr The different DimConstraints. The array will be copied for storage.
* null or empty array will reset the constraints to one DimConstraint with default values.
*/
public final void setConstraints(DimConstraint[] constr);
/**
* Returns the number of DimConstraints.
* @return The number of DimConstraints.
*/
public int getCount();
}Chainable configuration methods for axis constraints.
// Basic operations
public final AC count(int size);
public final AC noGrid();
public final AC noGrid(int... indexes);
public final AC index(int i);
public final AC fill();
public final AC fill(int... indexes);
// Size configuration
public final AC size(String s);
public final AC size(String size, int... indexes);
// Gap configuration
public final AC gap();
public final AC gap(String size);
public final AC gap(String size, int... indexes);
// Alignment
public final AC align(String side);
public final AC align(String side, int... indexes);
// Size groups
public final AC sizeGroup();
public final AC sizeGroup(String s);
public final AC sizeGroup(String s, int... indexes);
// Grow behavior
public final AC growPrio(int p);
public final AC growPrio(int p, int... indexes);
public final AC grow();
public final AC grow(float w);
public final AC grow(float w, int... indexes);
// Shrink behavior
public final AC shrinkPrio(int p);
public final AC shrinkPrio(int p, int... indexes);
public final AC shrink();
public final AC shrink(float w);
public final AC shrink(float w, int... indexes);
// Deprecated methods (still part of public API)
@Deprecated
public final DimConstraint[] getConstaints();
@Deprecated
public final void setConstaints(DimConstraint[] constr);
@Deprecated
public final AC shrinkWeight(float w);
@Deprecated
public final AC shrinkWeight(float w, int... indexes);Component constraint object for individual component positioning and sizing with comprehensive fluent builder API.
/**
* A simple value holder for one component's constraint.
* Provides programmatic alternative to string-based component constraints.
*/
public class CC implements Externalizable {
/**
* Empty constructor creating default component constraints.
*/
public CC();
}Direct property access for component constraints.
// Position and cell
public int getCellX();
public void setCellX(int x);
public int getCellY();
public void setCellY(int y);
public UnitValue[] getPos();
public void setPos(UnitValue[] pos);
// Span
public int getSpanX();
public void setSpanX(int cells);
public int getSpanY();
public void setSpanY(int cells);
// Docking
public int getDockSide();
public void setDockSide(int side);
// Flow
public Boolean getFlowX();
public void setFlowX(Boolean b);
// Skip and split
public int getSkip();
public void setSkip(int cells);
public int getSplit();
public void setSplit(int parts);
// Hide mode
public int getHideMode();
public void setHideMode(int mode);
// ID and tag
public String getId();
public void setId(String id);
public String getTag();
public void setTag(String tag);
// Push weights
public Float getPushX();
public void setPushX(Float weight);
public Float getPushY();
public void setPushY(Float weight);
// Padding
public UnitValue[] getPadding();
public void setPadding(UnitValue[] sides);
public UnitValue[] getVisualPadding();
public void setVisualPadding(UnitValue[] sides);
// Bounds and external
public boolean isBoundsInGrid();
public void setBoundsInGrid(boolean b);
public boolean isExternal();
public void setExternal(boolean b);
// Wrap and newline
public boolean isWrap();
public void setWrap(boolean b);
public BoundSize getWrapGapSize();
public void setWrapGapSize(BoundSize s);
public boolean isNewline();
public void setNewline(boolean b);
public BoundSize getNewlineGapSize();
public void setNewlineGapSize(BoundSize s);
// Dimension constraints
public DimConstraint getHorizontal();
public void setHorizontal(DimConstraint h);
public DimConstraint getVertical();
public void setVertical(DimConstraint v);
public DimConstraint getDimConstraint(boolean isHor);
// Animation
public AnimSpec getAnimSpec();Comprehensive fluent API for component constraint configuration.
// Size groups
public final CC endGroupX(String s);
public final CC endGroupY(String s);
public final CC endGroup(String ... xy);
public final CC sizeGroupX(String s);
public final CC sizeGroupY(String s);
public final CC sizeGroup(String ... xy);
// Width and height
public final CC minWidth(String size);
public final CC width(String size);
public final CC maxWidth(String size);
public final CC minHeight(String size);
public final CC height(String size);
public final CC maxHeight(String size);
// Gaps
public final CC gapX(String before, String after);
public final CC gapY(String before, String after);
public final CC gap(String ... args);
public final CC gapBefore(String boundsSize);
public final CC gapAfter(String boundsSize);
public final CC gapTop(String boundsSize);
public final CC gapLeft(String boundsSize);
public final CC gapBottom(String boundsSize);
public final CC gapRight(String boundsSize);
// Alignment
public final CC alignX(String align);
public final CC alignX(AlignX align);
public final CC alignY(String align);
public final CC alignY(AlignY align);
// Grow behavior
public final CC growPrioX(int p);
public final CC growPrioY(int p);
public final CC growPrio(int ... widthHeight);
public final CC growX();
public final CC growX(float w);
public final CC growY();
public final CC growY(float w);
public final CC grow();
public final CC grow(float ... widthHeight);
// Deprecated methods (still part of public API)
@Deprecated
public final CC growY(Float w);
// Shrink behavior
public final CC shrinkPrioX(int p);
public final CC shrinkPrioY(int p);
public final CC shrinkPrio(int ... widthHeight);
public final CC shrinkX(float w);
public final CC shrinkY(float w);
public final CC shrink(float ... widthHeight);
// Cell position and span
public final CC cell(int ... colRowWidthHeight);
public final CC span(int ... cells);
public final CC spanX();
public final CC spanX(int cells);
public final CC spanY();
public final CC spanY(int cells);
// Push weights
public final CC push();
public final CC push(Float weightX, Float weightY);
public final CC pushX();
public final CC pushX(Float weight);
public final CC pushY();
public final CC pushY(Float weight);
// Split and skip
public final CC split();
public final CC split(int parts);
public final CC skip();
public final CC skip(int cells);
// Flow control
public final CC flowX();
public final CC flowY();
public final CC external();
// Wrap and newline
public final CC wrap();
public final CC wrap(String gapSize);
public final CC newline();
public final CC newline(String gapSize);
// Docking
public final CC dockNorth();
public final CC dockWest();
public final CC dockSouth();
public final CC dockEast();
// Absolute positioning
public final CC x(String x);
public final CC y(String y);
public final CC x2(String x2);
public final CC y2(String y2);
public final CC pos(String x, String y);
public final CC pos(String x, String y, String x2, String y2);
// Padding
public final CC pad(int top, int left, int bottom, int right);
public final CC pad(String pad);
// ID and tag
public final CC id(String s);
public final CC tag(String tag);
public final CC hideMode(int mode);Individual dimension constraint used within AC objects for detailed column/row configuration.
/**
* A constraint for one dimension (column or row).
* Contains size, gap, alignment, and other properties for a single grid dimension.
*/
public class DimConstraint implements Externalizable {
/**
* Empty constructor creating default dimension constraint.
*/
public DimConstraint();
// Size constraint
public BoundSize getSize();
public void setSize(BoundSize size);
// Grow/shrink behavior
public int getGrowPriority();
public void setGrowPriority(int p);
public Float getGrow();
public void setGrow(Float weight);
public int getShrinkPriority();
public void setShrinkPriority(int p);
public Float getShrink();
public void setShrink(Float weight);
// Alignment
public UnitValue getAlign();
public void setAlign(UnitValue uv);
public UnitValue getAlignOrDefault(boolean isCols);
// Gaps
public BoundSize getGapAfter();
public void setGapAfter(BoundSize size);
public BoundSize getGapBefore();
public void setGapBefore(BoundSize size);
// Groups
public String getSizeGroup();
public void setSizeGroup(String s);
public String getEndGroup();
public void setEndGroup(String s);
// Fill and grid behavior
public boolean isFill();
public void setFill(boolean b);
public boolean isNoGrid();
public void setNoGrid(boolean b);
}Important enumeration types used in constraint configuration.
/**
* Horizontal alignment enumeration for X-axis positioning.
*/
public enum AlignX {
LEADING("leading"),
LEFT("left"),
CENTER("center"),
RIGHT("right"),
TRAILING("trailing");
/**
* Returns the string code for this alignment.
* @return The string representation used in constraints.
*/
public String code();
}
/**
* Vertical alignment enumeration for Y-axis positioning.
*/
public enum AlignY {
TOP("top"),
CENTER("center"),
BOTTOM("bottom"),
BASELINE("baseline");
/**
* Returns the string code for this alignment.
* @return The string representation used in constraints.
*/
public String code();
}
/**
* Hide mode enumeration for component visibility behavior.
*/
public enum HideMode {
NORMAL(0),
SIZE_0_RETAIN_GAPS(1),
SIZE_0_GAPS_0(2),
DISREGARD(3);
/**
* Returns the numeric code for this hide mode.
* @return The integer code used internally.
*/
public int getCode();
/**
* Returns the HideMode for the specified code.
* @param code The integer code to lookup.
* @return The corresponding HideMode enum value.
*/
public static HideMode of(int code);
}// Dock sides constants in CC class
public static final String[] DOCK_SIDES = {"north", "west", "south", "east"};Usage Examples:
import net.miginfocom.layout.*;
import net.miginfocom.layout.AlignX;
import net.miginfocom.layout.AlignY;
import net.miginfocom.layout.HideMode;
import net.miginfocom.swing.MigLayout;
import javax.swing.*;
// Layout constraints using fluent API
LC layoutConstraints = new LC()
.flowX() // Horizontal flow
.fillY() // Fill vertically
.wrap() // Enable wrapping
.insets("10") // Set insets
.debug(); // Enable debug
// Column constraints using fluent API
AC columnConstraints = new AC()
.count(3) // Three columns
.fill(0) // First column fills
.size("100px", 1) // Second column fixed 100px
.grow(1.0f, 2); // Third column grows
// Row constraints
AC rowConstraints = new AC()
.gap("5px") // 5px gaps between rows
.align("top"); // Top alignment
// Create layout with programmatic constraints
MigLayout layout = new MigLayout(layoutConstraints, columnConstraints, rowConstraints);
JPanel panel = new JPanel(layout);
// Component constraints using fluent API
CC buttonConstraints = new CC()
.cell(0, 0, 2, 1) // Position and span
.pushX() // Push horizontally
.growX() // Grow horizontally
.id("submitButton") // Set ID for linking
.tag("form") // Set tag for grouping
.alignX(AlignX.CENTER); // Center alignment using enum
JButton button = new JButton("Submit");
panel.add(button, buttonConstraints);
// Complex component constraints with method chaining
CC textFieldConstraints = new CC()
.cell(0, 1) // Cell position
.spanX(3) // Span 3 columns
.growX() // Grow horizontally
.pad("5", "10", "5", "10") // Padding
.gapAfter("10px") // Gap after component
.hideMode(HideMode.SIZE_0_GAPS_0.getCode()) // Hide mode using enum
.sizeGroupX("inputs") // Size group
.pushX(0.5f); // Push weight
JTextField textField = new JTextField();
panel.add(textField, textFieldConstraints);
// Docking constraints
CC toolbarConstraints = new CC()
.dockNorth() // Dock to north
.growX(); // Grow horizontally
JToolBar toolbar = new JToolBar();
panel.add(toolbar, toolbarConstraints);Install with Tessl CLI
npx tessl i tessl/maven-com-miglayout--miglayout-swing