2016-12-12 47 views
0

我想在JLabels之间创建垂直空间。这是我的代码:在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来实现吗?

谢谢。

+2

流布局不是这个的最佳选择。如果您的需求很简单,请尝试BoxLayout或GridLayout。 (我也建议你用'Swing'来标记这个帖子,让合适的人看到它。) – Enwired

+0

FlowLayout的用例是将你的组件放在一行中。使用'GridBagLayout'进行最大程度的自定义。你也可以使用一些非标准的布局。例如[MIG Layout](http://www.miglayout.com/)或[Form Layout](http://manual.openestate.org/extern/forms-1.2.1/tutorial/quickstart.html) –

回答

2

我想创建JLabel之间的垂直空间

那么你或许应该使用BoxLayout。有关工作示例,请参阅How to Use BoxLayout上的Swing教程部分。

FlowLayout完成将JLabel放置在面板的左侧。按照此

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

我要放置一些的JLabel在中心

我相信这是对标签的对齐方式(每个组件是不同的)的默认值,这样你就不必做任何东西。但是如果你想确保你总是可以在标签上使用setAlignment(0.5f)