Java setAlignmentX(居中对齐)不居中JFrame中的boxLayout

Java setAlignmentX(居中对齐)不居中JFrame中的boxLayout,java,swing,layout-manager,boxlayout,Java,Swing,Layout Manager,Boxlayout,我想保持我的两个JLabel文本左对齐,同时将我的boxLayout放在JFrame的中心 我在我的boxlayout面板上尝试了setAlignmentX(中心对齐),但它没有将我的boxlayout放在中间 import javax.swing.BoxLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class GuiTest extends JFr

我想保持我的两个JLabel文本左对齐,同时将我的boxLayout放在JFrame的中心

我在我的boxlayout面板上尝试了setAlignmentX(中心对齐),但它没有将我的boxlayout放在中间

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class GuiTest extends JFrame {

    private static final long serialVersionUID = 1L;
    private JLabel jLabelOne = new JLabel();    
    private JLabel jLabelTwo = new JLabel();
    private JPanel panel = new JPanel();
    private BoxLayout boxLayout = new BoxLayout(panel,BoxLayout.Y_AXIS);
    public GuiTest() {

        jLabelOne.setAlignmentX(LEFT_ALIGNMENT);
        jLabelTwo.setAlignmentX(LEFT_ALIGNMENT);

        jLabelOne.setText("This is text one");
        jLabelTwo.setText("This is text two");
        panel.setLayout(boxLayout);
        panel.add(jLabelOne);
        panel.add(jLabelTwo);

        panel.setAlignmentX(CENTER_ALIGNMENT);
        add(panel);
        pack();
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setSize(1024,768);
        setLocationRelativeTo(null);   
        setVisible(true);
    }

    public static void main(String args[]) {
        new GuiTest();
    }
}

我相信这不会实现任何目标:

panel.setAlignmentX(CENTER_ALIGNMENT);
因为您正在将面板添加到JFrame的contentPane(一个使用BorderLayout的容器)中,并且实际上是以默认方式添加它,即BorderLayout.CENTER

考虑为contentPane提供GridBagLayout,并以默认方式添加面板JPanel,该面板应居中。只有当它的首选大小小于JFrame的contentPane时,才会看到它

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class GuiTest extends JFrame {

    private static final long serialVersionUID = 1L;
    private JLabel jLabelOne = new JLabel();    
    private JLabel jLabelTwo = new JLabel();
    private JPanel panel = new JPanel();
    private BoxLayout boxLayout = new BoxLayout(panel,BoxLayout.Y_AXIS);

    public GuiTest() {

        panel.setLayout(boxLayout);

        jLabelOne.setAlignmentX(CENTER_ALIGNMENT);
        jLabelTwo.setAlignmentX(CENTER_ALIGNMENT);

        jLabelOne.setText("This is text one");
        jLabelTwo.setText("This is text two");

        panel.add(jLabelOne);
        panel.add(jLabelTwo);

        panel.setAlignmentX(CENTER_ALIGNMENT);
        add(panel);
        setSize(1024,768);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);      
        setLocationRelativeTo(null);   
        setVisible(true);
    }

    public static void main(String args[]) {
        new GuiTest();
    }
}
这会让你得到你想要的。你有些东西坏了