如何在boxLayout的两个按钮之间添加空格?


问题内容

我一BoxLayout组有四个按钮。这只是两个示例,因为它们都是重复的代码。我想在每个按钮之间创建一个很小的空间,以免它们彼此碰到。我几乎尝试了中的所有方法,但.add(Box.Create....)没有任何效果。

    enter.add(Box.createVerticalGlue());
    enter.add(Box.createHorizontalGlue()); 
    //enter.add(new JSeparator(SwingConstants.HORIZONTAL));
    JButton float = new JButton("LOWER");
    float.add(Box.createVerticalGlue());
    float.add(Box.createHorizontalGlue());

问题答案:

如果要在组件之间留有空间,则可以为一个或两个组件添加一个空边框,或插入不可见的组件以提供空间。您可以在Box类的帮助下创建不可见的组件。

由于您已经使用过胶水,但没有成功(我怀疑为什么吗?),因此您可以尝试使用类似 Rigid area的方法

// Horizontal spacer
container.add(firstComponent);
container.add(Box.createRigidArea(new Dimension(5, 0)));
container.add(secondComponent);

看一下使用不可见组件作为填充剂,它为您提供了很多选择和解释。


其他信息,从在组件之间放置空间开始

三个因素影响容器中可见组件之间的空间量:

  • 布局经理

一些布局管理器会自动在组件之间放置空间。别人没有。有些可以让您指定组件之间的空间量。有关间距支持的信息,请参见每个布局管理器的使用方法页面。

  • 隐形组件

您可以创建轻量级组件,这些组件不执行任何绘制,但是会占用GUI中的空间。通常,您在所控制的容器中使用不可见的组件BoxLayout。有关使用不可见组件的示例,请参见如何使用BoxLayout

  • 空边框

无论使用什么布局管理器,都可以通过向组件添加空边框来影响组件之间的表观空间。空边框的最佳候选对象是通常没有默认边框的组件,例如面板和标签。在某些外观实现中,某些其他组件可能无法很好地与边框配合使用,这是因为其绘画代码的实现方式。有关边框的信息,请参见如何使用边框