【问题标题】:Creating vertical space between JLabels not going as expected在 JLabel 之间创建垂直空间未按预期进行
【发布时间】:2016-12-14 02:14:45
【问题描述】:

我想在 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 之间的垂直间距相等,但是,当我调整Box.createHorizontalStrut(50) 时会变得很奇怪有人知道为什么吗? FlowLayout 已完成以将 JLabels 定位到面板的左侧。根据这一点,我想将一些 JLabels 定位在中心(因此水平移动),FlowLayout 是否有另一种方法来做到这一点?

谢谢。

【问题讨论】:

  • 流式布局不是最好的选择。如果您的需求很简单,请尝试 BoxLayout 或 GridLayout。 (我还建议你用Swing 标记这篇文章,让合适的人看到它。)
  • FlowLayout 的通常情况是将组件排成一行。使用GridBagLayout 进行最大程度的定制。您也可以使用一些非标准布局。例如MIG LayoutForm Layout

标签: java swing jlabel


【解决方案1】:

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

那么您可能应该使用BoxLayout。请阅读 How to Use BoxLayout 上的 Swing 教程中的部分以获取工作示例。

FlowLayout 已完成以将 JLabels 定位到面板的左侧。按照这个

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

我想把一些 JLabel 放在中间

我相信这是标签对齐的默认值(每个组件都不同),因此您无需执行任何操作。但是,如果您想确保始终可以在标签上使用setAlignment(0.5f)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    相关资源
    最近更新 更多