Java 在JLabel之间创建垂直空间未按预期进行

Java 在JLabel之间创建垂直空间未按预期进行,java,swing,jlabel,Java,Swing,Jlabel,我想在jlabel之间创建一个垂直空间。这是我的代码: 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.crea

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

    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
之间有相等的垂直空间,但是,当我调整
框时,它会变得很奇怪。CreateHorizontalstrop(50)
有人知道为什么吗?FlowLayout用于将JLabel定位到面板的左侧。根据这一点,我想将一些JLabel放置在中心位置(因此水平移动),是否有其他方法通过
FlowLayout
来实现这一点

谢谢

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

然后您可能应该使用
BoxLayout
。阅读上Swing教程中的部分以了解工作示例

FlowLayout用于将JLabel定位到面板的左侧。根据此,

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

我想把一些JLabel放在中间

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

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

然后您可能应该使用
BoxLayout
。阅读上Swing教程中的部分以了解工作示例

FlowLayout用于将JLabel定位到面板的左侧。根据此,

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

我想把一些JLabel放在中间


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

流布局不是最佳选择。如果您的需求很简单,请尝试BoxLayout或GridLayout。(我还建议你在这篇文章上加上
Swing
标签,让正确的人看到它。)
FlowLayout
通常的做法是将组件排成一行。使用
GridBagLayout
进行最大程度的定制。也可以使用一些非标准布局。例如,流式布局并不是最好的选择。如果您的需求很简单,请尝试BoxLayout或GridLayout。(我还建议你在这篇文章上加上
Swing
标签,让正确的人看到它。)
FlowLayout
通常的做法是将组件排成一行。使用
GridBagLayout
进行最大程度的定制。也可以使用一些非标准布局。例如或