2011-07-29 116 views
5

我想在我的JButton上保留默认边框,但也在它们周围留出空白区域。我正在使用垂直BoxLayout如何在Jbutton边缘添加间隙?

  • 我原本避谈边界,并得到了单个像素LineBorder S,这是我想要的,但按键全部抵靠在对方。

  • 我又试图button[i].setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5))。而不是在按钮周围添加空白区域,它使按钮的区域扩大。它也删除了LineBorder

  • 我然后设法:button[i].setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5), button.getBorder()))

这给我回了LineBorder,而是比线外添加空格,它只是延长了按钮的区域超越线!

我知道我可以添加空白框来留出我的按钮空间,但我也希望在它们两侧留出空间,这就是为什么我要添加EmptyBorder。我是新来的摆动,所以也许有这样做,我不知道:)

我使用的Jython的完全更好的办法,但API应该是一样从Java。

回答

4

从概念上讲,你要添加的“空边界”是不是真正的按钮(例如,他们不应该点击)的一部分。

这实际上是布局的问题,所以你应该检查你正在使用的布局管理器的文档。例如:

依此类推。

+0

嗯。当我点击线边界外的按钮时,它仍然有效? FlowLayout不会让你垂直排列东西吗? –

+0

@CamJackson:FlowLayout不允许你垂直排列东西,但是BoxLayout可以。 – Grodriguez

+0

谢谢,看起来答案基本上是“找到更好的布局!” :P –

3

我认为将按钮添加到面板并将空边框设置为面板会更简单。

+0

这也可以。然后,面板上的边框在标题内部的蚀刻内部空白(面板外部的空间)内为空。如果我在我的边界上有四层嵌套,我会“做错了”吗? –

+0

多层可以。我甚至会创建一个自定义组件MyBorderedButton扩展了JPanel,并在必要时使用它来代替按钮。 – StanislavL

+0

@StanislavL:我发现它有一个XXXButton子类,它实际上是一个JPanel(而不是Button的子类)。例如,将一个动作监听器附加到你的MyBorderedButton或者Button里面? – Grodriguez