java - 盒子里的组件布局很奇怪

标签 java swing jpanel jlabel boxlayout

我正在为我用 java 制作的游戏编写 gui,并且我有以下代码:

private JLabel label = new JLabel("Enter New Level Name");
private JTextField field = new JTextField();
private static JButton createWorld = new JButton("Create World");
private JButton menu = new JButton("Main Menu");

public StartGame()
{
    setBackground(Color.CYAN);
    Box box = Box.createVerticalBox();
    box.add(label);
    box.add(Box.createRigidArea(new Dimension(0,10)));
    box.add(field);
    box.add(Box.createRigidArea(new Dimension(0,10)));
    Box hor = Box.createHorizontalBox();
    hor.add(createWorld);
    hor.add(Box.createRigidArea(new Dimension(10,0)));
    hor.add(menu);
    box.add(hor);
    add(box);
}

我希望此面板的外观是一个框中的所有组件都向右对齐。然而,当我运行这个时,除了标签与布局的其余部分不匹配之外,一切正常。谁能解释一下我做错了什么,或者可能的解决方法。

这是我的问题,我知道它很模糊,但你可以看出标签向右偏移。 Heres my problem

最佳答案

您应该设置每个组件的 x 对齐方式。来自java tutorial :“一般来说,由从上到下的 BoxLayout 对象控制的所有组件都应该具有相同的 X 对齐方式。”。

所以你应该添加这一行:

label.setAlignmentX(Component.CENTER_ALIGNMENT);

关于java - 盒子里的组件布局很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16309529/

相关文章:

JavaFX 结合实用程序和透明舞台风格

java - JPanel 未显示

java - 在新的 JFrame 中添加 JTextField

java - 访问 arraylist 数组中的元素

java - 其中哪一个是使用 tiles 的更好方法

java - 如何检查 29 个复选框中的哪些 jcheckbox 被选中

java - 类中的第二个 addActionListener 未打开新窗口

java - Spring boot 中的事件监听器

java - Android 点击粘贴

java - JPanel 中的 JLabels,在运行时新标签包含以前的标签