箱子奇怪地布置组件

时间:2013-04-30 21:48:28

标签: 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

1 个答案:

答案 0 :(得分:2)

您应该设置每个组件的x对齐方式。来自java tutorial:“通常,由顶部到底部BoxLayout对象控制的所有组件应该具有相同的X对齐。”。

所以你应该添加这一行:

label.setAlignmentX(Component.CENTER_ALIGNMENT);