【问题标题】:Java FlowLayout Remove Horizontal Space in Front of First ComponentJava FlowLayout 删除第一个组件前面的水平空间
【发布时间】:2015-01-29 18:15:46
【问题描述】:

有没有更简单的方法来删除 FlowLayout 中第一个组件前面的水平空间?

这基本上是我的代码的样子:

JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 0));
JLabel label1 = new JLabel("Hello");
JLabel label2 = new JLabel("Goodbye");
panel.add(label1);
panel.add(label2);

我看到的是 label1 和 label2 之间存在水平间隙,但是它还在 label1 前面添加了间距。我目前的解决方案是删除水平间隙并向 label2 添加 EmptyBorder 来解决此问题。

但是对于有很多组件的情况,我想知道是否有更简单有效的方法来做这么简单的事情?

【问题讨论】:

  • 你用的是什么版本的JPanel?我想知道,因为您在构造函数中使用了 3 个参数(比较:docs.oracle.com/javase/7/docs/api/javax/swing/JPanel.html)。
  • 一般情况下,人们希望第一个组件前面有空隙。它看起来更好。
  • @user2438518 抱歉,已修复代码。 Gilbert Le Blanc:是的,但我需要让标签向左对齐,这就是我需要删除间距的原因。
  • 如果您希望许多标签和字段的列对齐,请使用 GridBagLayout。

标签: java swing flowlayout


【解决方案1】:

您可以使用水平的BoxLayout

panel.add( label1 );
panel.add( Box.createHorizontalStrut(5) );
panel.add( label2 );

或者您可以在面板中添加EmptyBorder,而不是标签:

panel.setBorder( BorderFactory.createEmptyBorder(0, -5, 0, 0) );

【讨论】:

    【解决方案2】:

    试试

    new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
    

    第二个参数代表水平间隙。所以也许这可以解决你的问题。

    你也可以看看:

    【讨论】:

    • 我已经尝试过了,问题是在两边都增加了一个间隙,当我真的在第一个标签的左侧有一个间隙时,然后在任何其他标签的两侧都有一个间隙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 2021-11-19
    相关资源
    最近更新 更多