2017-12-28 27 views
0

Ich versuche, ein Panel zu erstellen, mit MigLayout, aufgeteilt auf drei Zeilen. Die erste und die letzte Reihe sollten einen Schub von einem bestimmten Verhältnis haben (in diesem Fall 2f) und die Reihe dazwischen sollte so breiartig wie möglich wachsen, um den verbleibenden Raum zu besetzen.MigLayout - Panel mit Grow and Push

Allerdings habe ich einige Fälle, in denen die letzte Zeile, die zum Beispiel ein Panel ist, keine Komponenten enthalten wird. In diesem Fall möchte ich, dass die zweite Reihe die gesamte Höhe einnimmt und das kann ich nicht erreichen.

Bitte nicht, dass es aufgrund anderer Flussabhängigkeiten nicht möglich ist, es unsichtbar zu machen.

ich den Code hier angebracht haben:

public class TestClass { 

public static void main(String[] args) { 
    createPanel(true); 
    createPanel(false); 
} 

private static void createPanel(boolean removeAll) { 
    JFrame frame = new JFrame(); 
    JPanel panel = new JPanel(new MigLayout(new LC().fill().gridGap("0", "0").insetsAll("0"))); 

    panel.add(new JLabel("first row"), new CC().grow().newline().pushY(2f)); 

    JTextArea abc = new JTextArea("abc"); 
    abc.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED)); 
    panel.add(abc, new CC().push().grow().newline()); 

    JPanel pnl = new JPanel(new MigLayout(new LC().fill().gridGap("0", "0").insetsAll("0"))); 
    pnl.add(new JLabel("aaa"), new CC()); 
    pnl.add(new JLabel("bbb"), new CC().newline()); 
    pnl.add(new JLabel("ccc"), new CC().newline()); 
    panel.add(pnl, new CC().grow().newline().pushY(2f)); 
    if (removeAll) { 
     pnl.removeAll(); 
    } 
    frame.setContentPane(panel); 
    frame.setSize(100,800); 
    frame.setVisible(true); 
} 

}

enter image description here

Antwort

0

Verwenden dock Funktion für das, so oben in Norden, unten im Süden andocken und mittlere Reihe wird zwischen ihnen wachsen. http://www.miglayout.com/QuickStart.pdf überprüfen Sie die Seite Nr. 5 für Docking-Tutorial.

+0

Danke für die Antwort, eigentlich brauche ich alle drei Reihen zu wachsen, aber mit einem gewissen Anteil. Wenn ich das Top einfach nach Norden docke, und von unten nach Süden und immer noch den PushY halte, wird es mir nicht weiterhelfen, da die oberen und unteren Reihen ihre Größe nicht vergrößern. –