Mig Layout ist ein freier, von Mikael Grev, Inhaber der Firma MiG InfoCom AB, entwickelter Layout Manager (http://www.miglayout.com/), der unter BSD Lizenz steht. Es existieren Implementierungen für Swing, Swt und Java FX 2. Der Layout Manager hat einen sehr flexiblen Grid basierten Layout Ansatz und eignet sich für sehr viele Anwendungsfälle. Insbesondere ist damit die Erstellung von formularbasierten Masken sehr intuitiv und einfach umzusetzen.
Um Mig Layout mit jowidgets zu verwenden, wird empfohlen, vorab den Mig Layout Quick Start Guide zu studieren.
                    Die Klasse
                    org.jowidgets.common.widgets.layout.MigLayoutDescriptor
                    bietet die Möglichkeit, die
                    LayoutConstraints,
                    RowConstraints und
                    ColumnConstraints für das Layout festzulegen.
                    Die Constraints haben die gleiche Bedeutung wie in den Klassen
                    net.miginfocom.swt.MigLayout oder
                    net.miginfocom.swing.MigLayout.
                  
         
Im folgenden Beispiel wird ein MigLayout definiert.
  1      container.setLayout(new MigLayoutDescriptor("wrap", "[][grow, 0::]", "[][]"));
                    Das Layout hat zwei Spalten und zwei Zeilen, wobei die zweite
                    Spalte wächst und eine MinSize von
                    0 hat. Die
                    LayoutConstraints="wrap" bedeuten,
                    dass automatisch eine neue Zeile begonnen wird, wenn die
                    aktuelle Zeile voll ist (in diesem Fall also nach zwei
                    Controls).
                  
         
Die Cell Constraints werden im folgenden Beispiel beim Hinzufügen der Controls zum Container gesetzt:
  1      final String textFieldCC = "growx, w 0::";
  2  
  3      //row 0, column 0
  4      container.add(BPF.textLabel("Field 1"));
  5  
  6      //row 0, column 1
  7      container.add(BPF.textField(), textFieldCC);
  8  
  9      //row 1 (autowrap has wraped to row 1), column 0 
 10      container.add(BPF.textLabel("Field 2"));
 11  
 12      //row 1, column 1
 13      container.add(BPF.textField(), textFieldCC);
                    Die Textfelder wachsen horizontal und haben eine
                    MinSize von 0.
                  
         
Die folgende Abbildung zeigt das Ergebnis:
Hinweise:
                                 Da native Swt Controls keine MinSize
                                 haben, verwendet die Swt Mig Layout Implementierung als
                                 MinSize die
                                 PreferredSize. Das kann unter Umständen
                                 zu Problemen führen. Es wird daher empfohlen, die
                                 MinSize immer explizit anzugeben, wenn
                                 diese von der PreferredSize abweicht.
                               
                  
                                 Wenn eine SPI Implementierung kein natives Mig Layout
                                 unterstützt, wird bei der Verwendung des nativen
                                 MigLayoutDescriptor automatisch
                                 Mib Layout verwendet.
                               
                  
Wenn Mib Layout verwendet wird, wird kein natives Mig Layout verwendet, auch wenn die verwendete SPI Implementierung ein natives Mig Layout bereitstellt.
                                 Die auf einem Control gesetzten Default Größen
                                 MinSize, PreferredSize
                                 und MaxSize werden vom nativen MigLayout
                                 nicht ausgewertet. Es
                                 wird daher empfohlen, die Methoden zum Ändern der Default
                                 Größen auf Controls nicht in Kombination mit MigLayout zu
                                 verwenden, um eine größt mögliche Kompatibilität zu
                                 gewährleisten!