Java 如何选择适合当前外观的组件之间的间隙?

Java 如何选择适合当前外观的组件之间的间隙?,java,swing,layout,Java,Swing,Layout,在创建Swing GUI时,如何选择用于分离组件的水平和垂直间隙?类似于这里所问的,但与平台无关 一般来说,我只是用5个像素来表示所有内容,这在Windows经典主题中看起来很合理,但在Windows 8下运行时看起来有些奇怪,特别是当有多个嵌套容器组件(例如Dialog->TabbedPane->ScrollPane)时 我已经查看了UIDefaults,但似乎没有任何关于组件间距的提示(我希望找到至少几个可以用作提示的值,但布局管理器似乎通常使用硬编码的deafolts,例如FlowLayo

在创建Swing GUI时,如何选择用于分离组件的水平和垂直间隙?类似于这里所问的,但与平台无关

一般来说,我只是用5个像素来表示所有内容,这在Windows经典主题中看起来很合理,但在Windows 8下运行时看起来有些奇怪,特别是当有多个嵌套容器组件(例如Dialog->TabbedPane->ScrollPane)时

我已经查看了UIDefaults,但似乎没有任何关于组件间距的提示(我希望找到至少几个可以用作提示的值,但布局管理器似乎通常使用硬编码的deafolts,例如FlowLayout使用硬编码的5像素间距)


我可以采取什么方法使我的布局更具外观感知能力(我通常使用系统外观)?

如果您希望组件的布局稍有变化以适应您的用户平台,那么也许只需使用用户的系统外观:

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
编辑以提供用于指定更具体间隙的解决方案


要指定组件之间的边距和填充,可以尝试使用。您可能不需要在整个Swing代码中使用方框布局,或者在添加接受Swing组件的组件之前使用一个实用程序函数,以及一个左右顶部和底部边距/填充。然后,此函数将返回一个JPanel,其中包含一个框布局,并传递了边距/填充,同时包含一个组件,即您传入的组件。

Ahm,这正是我使用的。问题是它不能神奇地选择组件之间的间距。哦,对不起,你可以尝试使用一个。您可能不需要在整个Swing代码中使用方框布局,或者在添加接受Swing组件的组件之前使用一个实用程序函数,以及一个左右顶部和底部边距/填充。然后,这个函数将返回一个JPanel,其中包含一个框布局,其中包含了边距/填充,并包含一个组件,即您传入的组件。我不知道如何使用BoxLayout解决我的问题。当你写“左-右-上-下边距/填充”时,你的意思是什么?为这些边距确定合适的值正是我想要的。
BoxLayout
Box.addHorizontalstrop
Box.addVerticalstrop
提供,以及其他
Box.
用于在JComponents中定义空格的方法。我无法帮助您确定合适的边距值,因为这更像是一个设计问题,但正如Gorb所说,BoxLayout能够添加边距/填充。我给出的链接显示了添加边距/填充的各种方法。