3

私はMigLayoutが初めてです。私はこれに似たレイアウトを作成しようとしています:

ここに画像の説明を入力

等間隔のボタンの行があり、その後にすべての列にまたがるリストの行が続き、利用可能な垂直方向のスペースを埋めるように拡大し、さらにいくつかのコントロールを含む最後の行が続きます.

最初の 2 行は問題なく取得できます。

ただし、最後の行のコンテンツを追加すると、MigLayout は (当然のことながら) 最初の 2 行の列を保持しようとします。私はこのようなものを残しています:

ここに画像の説明を入力

最後の行のラベルとスピナーは列の幅を拡張し、一番上の行に不均一なギャップが残ります。

これまでに確立された行/列を忘れて「最初からやり直す」ことを MigLayout に伝える方法はありますか、それともネストされたレイアウトを作成するための解決策はありますか?

これが完全な例のパネルです。

public class TestPanel extends JPanel {

    JButton button1 = new JButton("Button 1");
    JButton button2 = new JButton("Button 2");
    JButton button3 = new JButton("Button 3");
    JButton button4 = new JButton("Button 4");
    JButton button5 = new JButton("Button 5");

    JList list = new JList(new String[]{"some", "fake", "data"});

    JLabel label = new JLabel("this is my long label");
    JSpinner spinner = new JSpinner();
    JCheckBox checkbox = new JCheckBox("Check me");

    public TestPanel() {
        initComponents();
    }

    private void initComponents() {

        setLayout(new MigLayout());

        add(button1);
        add(button2);
        add(button3);
        add(button4);
        add(button5, "wrap");

        add(list, "span, growx, growy, wrap");

        // without these 3 lines, the row of buttons are equally spaced
        // adding the long label extends the width of the first column
        add(label);
        add(spinner);
        add(checkbox, "span, align right");
    }
}
4

1 に答える 1

2

セルをマージして分割することで、目的のレイアウトを実現できました。

setLayout(new MigLayout());
add(button1);
add(button2);
add(button3);
add(button4);
add(button5, "wrap");
add(list, "span, growx, growy, wrap");

// merge 4 cells then split the combined cell in half
// label goes in the first cell of the split
// spinner goes in the second cell of the split
add(label, "span 4, split 2);
add(spinner);
// check box goes in the 5th and final cell of the row (after the 4 merged cells)
add(checkBox, "align right");

結果は次のとおりです。

ここに画像の説明を入力

于 2013-08-01T13:22:29.933 に答える