2009-10-19 108 views
1

我正在使用borderLayout将我的组件放置在JFrame和Box(BoxLayout.X_AXIS)中,以将按钮放在一起。但它造成了两个问题:在不改变按钮大小的情况下更改按钮文本

  1. 我想要的按钮具有相同的大小,但它会自动调整大小,它们适合在其中的文本(尤其是恼人的,当我在运行时改变按钮中的文本)

  2. 我想要的按钮使它们之间的空间一点点(比方说10像素)

使用的borderlayout这是可能的,或者我需要使用setLayout的为空?如果是这样,这是不是会搞砸框架中按钮的原始位置?或者这仍然会由与borderLayout放置在一起的Box处理?

回答

4

一些建议

  1. 尝试preferredSize设置到合适的Dimension
  2. 如果不行,试试也maximumSizeminimumSize设置此相同的尺寸值
  3. 如果仍然不起作用,请将按钮的布局管理器更改为GridBagLayout。这个布局管理器的优点是,它可以让你以微小的细节控制布局的行为。缺点是您通常需要在GridBagLayout上配置大量属性才能获得所需的行为。我建议首先检查GridBagLayout教程,因为它是一个相当复杂的野兽。
+0

谢谢,设置按钮的最小/最大尺寸工作。我现在正在研究GridBagLayout。 – FinalArt2005 2009-10-19 14:31:34

+0

设置preferredSize似乎只适用于高度,而不适用于宽度。 – FinalArt2005 2009-10-20 09:46:54

2

如果您希望它们具有相同的大小,那么只需将按钮添加到GridLayout,它们将自动调整为最大的文本字符串大小。您还可以指定组件之间的差距。

+0

谢谢,我已经研究过GridBagLayout,但我认为它对于我所拥有的几个按钮来说有点太精细了,所以我现在尝试这个GridLayout(在阅读关于GridBagLayout时已经发现它)。如果我能设置一个差距,那就太好了。 – FinalArt2005 2009-10-20 09:48:57