12

我正在尝试使用 Swing 小部件在面板内放置两个按钮。在 NetBeans IDE 中,我的属性在属性窗格JSeparator border中设置为。(No border)

尽管如此,还是出现了一条线。这不是我对分隔符对象的期望。难道我做错了什么?来自 Delphi 和 C# WinForms 的背景,我希望在 Swing 中找到一些奇怪的东西。但是,您如何在面板中的两个按钮之间创建一个特定大小的透明间隙?我是否必须使用布局并避免使用JSeparator

更新:使用布局并且没有任何分隔符对象应该是微不足道的。那么你是怎么做到的呢?我正在研究 NetBeans 布局定制器和属性检查器,但没有办法做到这一点。(答案:带有插入而不是分隔符的布局。)

4

4 回答 4

27

您应该看一下Box类上的静态实用程序方法。它们可用于制造充当隐形分隔件的固定支柱;例如

JPanel pnl = new JPanel(new FlowLayout());
pnl.add(new JButton("Hello"));
pnl.add(Box.createHorizontalStrut(10)); // Fixed width invisible separator.
pnl.add(new JButton("Goodbye");

JPanel与使用适当的最小、最大和首选尺寸创建/配置自己相比,这会产生更紧凑的代码。

于 2010-06-04T15:32:19.383 回答
4

JSeparator旨在成为组件之间的可见分隔符。

javadoc 为JSeparator

JSeparator 提供了一个通用组件来实现分隔线 - 最常用作菜单项之间的分隔线,将它们分成逻辑分组。

如果您想在两个不可见的组件之间放置一个组件,请使用 anJPanel代替。setPreferedSize()然后用和设置面板的大小setMin/MaxSize()

于 2010-06-04T15:23:36.153 回答
2

你不需要 JSeparator。大多数布局允许您设置组件之间的间隙(空间)。Box 类可能特别有用。

于 2010-06-04T15:28:04.483 回答
1

使用高度值为 1 的 addSeparator 使其对我来说是不可见的,例如:

MyJToolBar.addSeparator(new Dimension(20, 1));
于 2015-03-19T23:37:14.103 回答