如何在Swing中的组件边框外添加边距?

Jon*_*nas 7 java swing border margin

我使用了多个绘有边框的组件.是否有任何简单的方法可以为组件添加边距,以便边框不会彼此如此接近?

jfp*_*ret 17

得到你想要的另一种方法是:

  1. 获取Border组件的当前值
  2. 如果null,EmptyBorder为您的组件设置一个
  3. 如果没有null,则创建一个新的 CompoundBorder(使用a EmptyBorderBorder组件的当前值)并为组件设置它

在代码中,应该看起来像那样(抱歉,我还没有测试过):

Border current = component.getBorder();
Border empty = new EmptyBorder(top, left, bottom right);
if (current == null)
{
    component.setBorder(empty);
}
else
{
    component.setBorder(new CompoundBorder(empty, current));
}
Run Code Online (Sandbox Code Playgroud)

哪里:

  • component是要添加边距的Swing组件
  • top,left,bottom,right是要在组件周围添加的像素数量

请注意,此方法可能会对表单布局产生影响(大小,对齐),具体取决于LayoutManager您使用的方法.但我觉得值得尝试.


Ale*_*x B 5

这通常是使用您的布局管理器完成的。例如,如果你正在使用GridBagLayout,您将设置insets在上GridBagConstraint对象为需要的值。

另一种选择是使用Box对象并添加水平或垂直结构。请参阅的javadocBox.createVerticalStrut( int width )和类似的createHorizontalStrut