java - setAlignmentX(CENTER_ALIGNMENT) 不在 JFrame 中使 boxLayout 居中

标签 java swing layout-manager boxlayout

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

我在我的 boxlayout 面板上尝试了 setAlignmentX(CENTER_ALIGNMENT) 但它没有将我的 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 时才会看到。

关于java - setAlignmentX(CENTER_ALIGNMENT) 不在 JFrame 中使 boxLayout 居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25219423/

相关文章:

java - 对多个 JPanel 使用 CardLayout 并且不显示任何内容

java - 为什么空布局和绝对位置在 Swing 中是不好的做法?

Java 在没有 IDE 的情况下运行外部 jar 吗?

java - 负载测试ironmq

Java 蜗牛线布局管理器

java - JPanel TitledBorder 中的标题截断 - Java swing

java - 在 GridBagLayout 中设置任意宽度

java - 如果距离大于 2,寻路搜索崩溃

java - 如何在 setIcon 到 JLabel 之前验证 img 文件是否存在,以防清理并构建为 JAR 文件?

java - Java 如何从多个复选框中检索值