Java Miglayout push push не работает должным образом - PullRequest
0 голосов
/ 29 марта 2012

Я хочу создать макет, как в этом примере, используя MiG Layout.Итак, последний JButton находится в нижней части JFrame.

public class MainFrame extends JFrame {

    public static void main(String[] args) {
         MainFrame mainFrame = new MainFrame();
         mainFrame.setDefaultCloseOperation(EXIT_ON_CLOSE);
         mainFrame.setPreferredSize(new Dimension(400, 300));
         mainFrame.pack();
         mainFrame.setLocationRelativeTo(null);
         mainFrame.setVisible(true);
    }

    public MainFrame() {
        this.setLayout(new MigLayout("debug", "[grow, fill]", "[][][]push[]"));
        this.add(new JButton("Test1"), "wrap");
        this.add(new JButton("Test2"), "wrap");
        this.add(new JButton("Test..."), "wrap");
        this.add(new JButton("TestBottom"), "");
    }
}

Моя проблема в том, что количество JButton-ов, которые я хочу добавить, является переменным, поэтому я не могу использовать определение строки в MiG Layout,Я попробовал этот код (и несколько производных)

public MainFrame() {
    this.setLayout(new MigLayout("debug", "[grow, fill]", ""));
    this.add(new JButton("Test1"), "wrap");
    this.add(new JButton("Test2"), "wrap");
    this.add(new JButton("Test..."), "wrap");
    this.add(new JButton("TestBottom"), "gaptop push");
}

Но, к сожалению, это не работает так, как хотелось бы.

Есть предложения?Заранее спасибо.

1 Ответ

0 голосов
/ 29 марта 2012

Я думаю, это похоже на то, что вы хотите.(спасибо за ваш рабочий пример)

public MainFrame() {
    this.setLayout(new MigLayout("debug, filly", "[grow, fill]", ""));
    this.add(new JButton("Test1"), "wrap");
    this.add(new JButton("Test2"), "wrap");
    this.add(new JButton("Test..."), "wrap");
    this.add(new JButton("TestBottom"), "push, bottom");
}

Я нахожу "fill" в первом параметре MigLayout () полезным во многих ситуациях (или "filly", "fillx").Я думаю, твой гэптоп давал разрыв в 0px.

...