Панель MigLayout внутри панели MigLayout - выравнивание по нижней части

Панель справа со всеми кнопками я бы хотела выровнять снизу.

JPanel easternDock = new JPanel(new MigLayout("", ""));
easternDock.add(button1, "wrap");
....
this.add(easternDock);

Я думаю, что мог бы добавить компонент выше всех кнопок и заставить его расти в измерении y, чтобы заполнить экран, но я не уверен, какой компонент я бы использовал для этого, и я не могу найти компоненты, предназначенные для сделай такую ​​вещь.

1 ответ

Решение

Я бы сделал так, чтобы внутри панели "EasternDock" была другая панель, содержащая все компоненты, а "EasternDock" толкает эту другую панель вниз, используя ограничение толкания столбца / строки.

Из шпаргалки MiG: http://www.miglayout.com/cheatsheet.html

": push" (или "push", если используется с размером зазора по умолчанию) можно добавить к размеру зазора, чтобы сделать этот зазор жадным, и попытаться занять как можно больше места, не делая компоновку больше, чем контейнер.

Вот пример:

public class AlignToBottom {

public static void main(String[] args) {
    JFrame frame = new JFrame();

    // Settings for the Frame
    frame.setSize(400, 400);
    frame.setLayout(new MigLayout(""));
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    // Parent panel which contains the panel to be docked east
    JPanel parentPanel = new JPanel(new MigLayout("", "[grow]", "[grow]"));

    // This is the panel which is docked east, it contains the panel (bottomPanel) with all the components
    // debug outlines the component (blue) , the cell (red) and the components within it (blue)
    JPanel easternDock = new JPanel(new MigLayout("debug, insets 0", "", "push[]")); 

    // Panel that contains all the components
    JPanel bottomPanel = new JPanel(new MigLayout());


    bottomPanel.add(new JButton("Button 1"), "wrap");
    bottomPanel.add(new JButton("Button 2"), "wrap");
    bottomPanel.add(new JButton("Button 3"), "wrap");

    easternDock.add(bottomPanel, "");

    parentPanel.add(easternDock, "east");

    frame.add(parentPanel, "push, grow");
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);

}

}       
Другие вопросы по тегам