MiGLayout Swing implementation providing constraint-based layout management for Java Swing applications
npx @tessl/cli install tessl/maven-com-miglayout--miglayout-swing@11.4.0MiGLayout Swing provides a constraint-based layout manager for Java Swing applications. It enables developers to create sophisticated layouts using string-based or programmatic constraints, supporting flowing, grid-based, absolute, grouped, and docking layouts with automatic per-platform fidelity.
<dependency><groupId>com.miglayout</groupId><artifactId>miglayout-swing</artifactId><version>11.4.1</version></dependency>com.miglayout.swingimport net.miginfocom.swing.MigLayout;
import net.miginfocom.layout.LC;
import net.miginfocom.layout.AC;
import net.miginfocom.layout.CC;import net.miginfocom.swing.MigLayout;
import javax.swing.*;
// Basic setup with string constraints
JPanel panel = new JPanel(new MigLayout("wrap 2", "[grow]", "[][]"));
// Add components with constraints
panel.add(new JLabel("Name:"), "align right");
panel.add(new JTextField(15), "growx");
panel.add(new JLabel("Email:"), "align right");
panel.add(new JTextField(15), "growx");
panel.add(new JButton("Submit"), "span 2, center");
// Alternative programmatic approach
MigLayout layout = new MigLayout();
layout.setLayoutConstraints("wrap 2");
layout.setColumnConstraints("[grow]");
layout.setRowConstraints("[][]");
JPanel programmaticPanel = new JPanel(layout);MiGLayout Swing is built around several key components:
MigLayout class implementing LayoutManager2 for Swing integrationSwingComponentWrapper, SwingContainerWrapper) that bridge Swing components with the MiGLayout engineLC, AC, CC) from the core module for programmatic layout definitionPrimary layout manager implementation providing constraint-based positioning and sizing for Swing containers.
public class MigLayout implements LayoutManager2, Externalizable {
// String-based constructors
public MigLayout();
public MigLayout(String layoutConstraints);
public MigLayout(String layoutConstraints, String colConstraints);
public MigLayout(String layoutConstraints, String colConstraints, String rowConstraints);
// Programmatic constructors
public MigLayout(LC layoutConstraints);
public MigLayout(LC layoutConstraints, AC colConstraints);
public MigLayout(LC layoutConstraints, AC colConstraints, AC rowConstraints);
}Component wrapper system providing seamless integration between Swing components and the MiGLayout constraint system.
public class SwingComponentWrapper implements ComponentWrapper {
public SwingComponentWrapper(Component c);
public Object getComponent();
public int getBaseline(int width, int height);
public float getPixelUnitFactor(boolean isHor);
}
public final class SwingContainerWrapper extends SwingComponentWrapper implements ContainerWrapper {
public SwingContainerWrapper(Container c);
public ComponentWrapper[] getComponents();
public int getComponentCount();
}Structured constraint objects for programmatic layout configuration, providing type-safe alternatives to string-based constraints.
// Layout constraints (from core module)
public class LC implements Externalizable {
public LC();
// Configuration methods for layout-level settings
}
// Axis constraints for columns/rows (from core module)
public class AC implements Externalizable {
public AC();
// Configuration methods for column/row constraints
}
// Component constraints (from core module)
public class CC implements Externalizable {
public CC();
// Configuration methods for individual component constraints
}// Component type constants
interface ComponentWrapper {
int TYPE_UNSET = -1;
int TYPE_UNKNOWN = 0;
int TYPE_CONTAINER = 1;
int TYPE_LABEL = 2;
int TYPE_TEXT_FIELD = 3;
int TYPE_TEXT_AREA = 4;
int TYPE_BUTTON = 5;
int TYPE_CHECK_BOX = 6;
int TYPE_COMBO_BOX = 7;
int TYPE_PANEL = 8;
int TYPE_LIST = 9;
int TYPE_TABLE = 10;
int TYPE_SEPARATOR = 11;
int TYPE_SPINNER = 12;
int TYPE_TABBED_PANE = 13;
int TYPE_PROGRESS_BAR = 14;
int TYPE_SLIDER = 15;
int TYPE_SCROLL_PANE = 16;
int TYPE_SCROLL_BAR = 17;
int TYPE_IMAGE = 18;
}
// Layout callback interface (from core module)
interface LayoutCallback {
// Callback methods for layout events
}