Панель 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);
}
}