在BorderLayout.CENTER中保留JButton的大小

时间:2009-05-14 05:08:22

标签: java swing

有没有办法在BorderLayout的中心保留JButton的自然大小?现在,它向所有方向扩展以填补它,但我希望它正常大小。

如果无法实现,我怎样才能让按钮位于面板正中央?

5 个答案:

答案 0 :(得分:14)

BorderLayout中心的组件总是被拉伸,您可以通过将按钮添加到带有FlowLayout的JPanel然后将其添加到CENTER来绕过它。

JPanel borderPanel = new JPanel(new BorderLayout());
JButton theButton = new JButton("Click Me");
JPanel flowPanel = new JPanel(new FlowLayout());
flowPanel.add(theButton);
borderPanel.add(BorderLayout.CENTER, flowPanel);

答案 1 :(得分:4)

我建议直接前往GridBagLayout。虽然它有一些奇怪的行为和糟糕的界面,但它是一个标准的布局,几乎可以做任何事情。您将需要它,因此即使不是非常必要,您也可以始终如一地使用相同的布局管理器。

答案 2 :(得分:1)

无论您放置在BorderLayout面板中心的哪个组件,它都会垂直和水平调整大小以填充所有可用区域。这是中心位置的特征。

答案 3 :(得分:1)

将GridBagLayout用于这种简单的布局是过度的。我会尽可能地避免GridBagLayout - 如果可以的话,使用嵌套的JPanel或MigLayout(外部jar)

答案 4 :(得分:0)

我认为你不能用BorderLayout做到这一点。容器的约束优先于首选大小。

对于手动编码,我建议您查看MiG Layout