在JLabel之间创建不符合预期的垂直空间

时间:2016-12-12 18:18:26

标签: java swing jlabel

我想在JLabels之间创建一个垂直空间。这是我的代码:

    JPanel label = new JPanel(new FlowLayout(FlowLayout.LEFT));
    label.add(Box.createVerticalStrut(50));
    label.add(label1);
    label.add(Box.createHorizontalStrut(50));
    label.add(label2);
    label.add(Box.createVerticalStrut(50));
    label.add(label3);
    label.add(Box.createHorizontalStrut(50));
    label.add(label4);

我想在每个JLabel之间保持相等的垂直空间,但是,当我调整Box.createHorizontalStrut(50)时,它会变得奇怪吗?有谁知道为什么?完成FlowLayout以将JLabel定位在面板的左侧。根据这一点,我想将一些JLabel定位在中心(因此是水平移动),还有另一种方法可以通过FlowLayout来实现吗?

感谢。

1 个答案:

答案 0 :(得分:2)

  

我想在JLabels之间创建一个垂直空间

然后你应该使用BoxLayout。阅读How to Use BoxLayout上的Swing教程中的部分以获取工作示例。

  

完成FlowLayout以将JLabel定位在面板的左侧。按照这个

然后,您可以在每个标签上使用setAlignmentX(0.0f)。 BoxLayout然后将标签对齐到左侧。

  

我想将一些JLabel放在中心位置

我认为这是标签对齐的默认值(每个组件都不同),因此您不必做任何事情。但是,如果您想确保始终可以在标签上使用setAlignment(0.5f)