setAlignmentY不在BorderLayout中居中JLabel

时间:2012-01-14 18:13:25

标签: java swing jlabel layout-manager

新的java和全新的网站。我有一个JLabel添加到BorderLayout的中心面板。我希望JLabel能够集中在小组中; setAlignmentX似乎有效,但setAlignmentY没有(标签出现在面板的顶部)。这是代码:

centerPanel = new JPanel();
centerPanel.setLayout(new BoxLayout(centerPanel,BoxLayout.Y_AXIS));

JLabel label = new JLabel("This should be centered");
label.setAlignmentX(Component.CENTER_ALIGNMENT);
label.setAlignmentY(Component.CENTER_ALIGNMENT);
centerPanel.add(label);

contentPane.add(centerPanel, BorderLayout.CENTER);

我也尝试过label.setVerticalAlignment(CENTER);但无济于事。我已经在API和Java教程中,在这个网站上以及通过谷歌搜索寻找答案。谢谢!

2 个答案:

答案 0 :(得分:19)

你很亲密,试试这个:

public static void main(String[] args)
{
    JFrame contentPane = new JFrame();
    JPanel centerPanel = new JPanel();
    centerPanel.setLayout(new BorderLayout());

    JLabel label = new JLabel("This should be centered");
    label.setHorizontalAlignment(SwingConstants.CENTER);
    centerPanel.add(label, BorderLayout.CENTER);

    contentPane.add(centerPanel, BorderLayout.CENTER);
    contentPane.pack();
    contentPane.setVisible(true);
}

Java中GUI编程的众多乐趣之一。如果我是诚实的话,我宁可捅一眼。

答案 1 :(得分:0)

我尝试垂直居中对齐JButton,但我有问题,它被拉伸了。在摆弄之后我发现它有效:

JPanel jpTop = new JPanel(new BorderLayout());
jbStop = new JButton("Cancel");
JPanel extraPanel = new JPanel();
extraPanel.setLayout(new BoxLayout(extraPanel, BoxLayout.X_AXIS));
extraPanel.setAlignmentY(Component.CENTER_ALIGNMENT);
extraPanel.add(jbStop);
jpTop .add(extraPanel, BorderLayout.EAST);

当然它也适用于JLabel。