MigLayout和垂直居中的组件

hol*_*d3n 4 java layout swing vertical-alignment miglayout

我想按中心按钮,如下所示:

预期结果

这是我的代码:

import java.awt.Dimension;
import javax.swing.*;
import net.miginfocom.swing.MigLayout;

public class MigLayoutTest extends JFrame {

    public static void main(String[] args) {

        JPanel content = new JPanel();
        content.setLayout(new MigLayout("center, wrap, gapy 20"));

        JButton buttonA = new JButton("button A");
        buttonA.setPreferredSize(new Dimension(100,30));
        JButton buttonB = new JButton("button B");
        buttonB.setPreferredSize(new Dimension(80,80));
        JButton buttonC = new JButton("button C");
        buttonC.setPreferredSize(new Dimension(300,40));
        JButton buttonD = new JButton("button D");
        buttonD.setPreferredSize(new Dimension(200,60));

        content.add(buttonA);
        content.add(buttonB);
        content.add(buttonC);
        content.add(buttonD);

        JFrame frame = new JFrame("MigLayout Test");
        frame.setContentPane(content);
        frame.setSize(600, 400);
        frame.setVisible(true);
    }

}
Run Code Online (Sandbox Code Playgroud)

按钮是居中的,但不是垂直的.

有什么建议?提前致谢.

kle*_*tra 5

白皮书定义了确切的语法:

al/align alignx [aligny]

继续:

可以将对齐指定为UnitValue或AlignKeyword.

因此,为了使整个块沿两个轴居中,使用AlignKeyword需要两个参数:

new MigLayout("al center center, wrap, gapy 20"); // centers in both directions
Run Code Online (Sandbox Code Playgroud)

下一句话:

如果使用AlignKeyword,则可以省略"align"关键字.

这将是:

new MigLayout("center center, wrap, gapy 20"); // centers horizontally only
Run Code Online (Sandbox Code Playgroud)

虽然不起作用,但在解析参数时看起来有点小故障.