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

Posted

技术标签:

【中文标题】如何在 boxLayout 的两个按钮之间添加空格?【英文标题】:How can I add a space in between two buttons in a boxLayout? 【发布时间】:2012-01-10 06:46:33 【问题描述】:

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());

【问题讨论】:

【参考方案1】:

如果您想在组件之间留出空间,您可以为一个或两个组件添加一个空边框,或者插入不可见的组件以提供空间。您可以借助 Box 类创建不可见的组件。

由于您已经使用过胶水但没有成功(我怀疑为什么?),您可以尝试刚性区域

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

看看Using Invisible Components as Filler,它为您提供了很多选择和解释。


更多信息,来自Putting Space Between Components,

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

布局管理器

一些布局管理器会自动在组件之间放置空间;其他人没有。有些允许您指定组件之间的空间量。有关间距支持的信息,请参阅每个布局管理器的操作指南页面。

隐形组件

您可以创建不执行绘制但会占用 GUI 空间的轻量级组件。通常,您在由BoxLayout 控制的容器中使用不可见组件。有关使用不可见组件的示例,请参阅 How to Use BoxLayout。

空白边框

无论布局管理器是什么,您都可以通过向组件添加空边框来影响组件之间的明显空间量。空边框的最佳候选者是通常没有默认边框的组件,例如面板和标签。由于其绘制代码的实现方式,其他一些组件在某些外观实现中可能无法很好地处理边框。有关边框的信息,请参阅How to Use Borders。

【讨论】:

不应该是Dimension(0, 5)而不是Dimension(5, 0)吗?对我来说Dimension(5, 0) 什么也没做。 @AdrianZhang 没错! Dimension (5, 0) 用于水平空间,Dimension (0, 5) 用于垂直空间。

以上是关于如何在 boxLayout 的两个按钮之间添加空格?的主要内容,如果未能解决你的问题,请参考以下文章

Kivy:如何从自定义 BoxLayout 显示 ScrollView?

两个工具按钮和 hboxlayout 之间的空间

将JLabel添加到使用BoxLayout的JFrame

如何将小部件动态添加到网格?

如何在 Flexbox 中的两个 div 之间添加边距/空格 [重复]

Kivy \\ 如何将按钮绑定到 boxlayout 的底部