Java - 如何将组件的垂直列居中?

She*_*ley 5 java layout swing center

这很简单,我想做什么,但我无法想办法.在JFrame或JPanel中,如何垂直居中组件?也就是说,类似于在HTML中使用中心标记.组件位于列中,它们都居中.

我尝试过使用Y_AXIS和PAGE_AXIS的BoxLayout,但它以一种奇怪的方式对齐我的组件.我试图使用FlowLayout设置首选大小,以便它包裹,但它不会居中.除非它真的是唯一的选择,否则我宁愿不使用像GridBagLayout这样强大的东西来做这么简单的事情.救命!

cam*_*ckr 8

如果我不得不猜测,我会说你正在使用具有不同"x对齐"的组件.尝试使用:

component.setAlignmentX(JComponent.CENTER_ALIGNMENT);
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅Swing教程中有关修复对齐问题的部分.

如果您需要更多帮助,请发布您的SSCCE以显示您尝试过的内容.

编辑:

import java.awt.*;
import javax.swing.*;

public class BoxLayoutTest extends JFrame
{
    public BoxLayoutTest()
    {
        Box box = new Box(BoxLayout.Y_AXIS);
        add( box );

        JLabel label = new JLabel("I'm centered");
        label.setAlignmentX(JComponent.CENTER_ALIGNMENT);

        box.add( Box.createVerticalGlue() );
        box.add( label );
        box.add( Box.createVerticalGlue() );
    }

    public static void main(String[] args)
    {
        BoxLayoutTest frame = new BoxLayoutTest();
        frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
        frame.setSize(300, 300);
        frame.setLocationRelativeTo( null );
        frame.setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)