在BorderLayout.CENTER中保留JButton的大小

3

有没有一种方法可以在BorderLayout的中心保留JButton的自然大小?现在,它会向所有方向扩展以填充空间,但我希望它保持正常大小。

如果不可能,如何使按钮保持正常大小并位于面板的中心?

5个回答

15

边框布局中心的组件会被拉伸,可以通过将按钮添加到具有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
我认为混合布局是一个不好的习惯,因为它会使代码变得混乱。 - willcodejavaforfood
我不同意 - http://madbean.com/anim/totallygridbag/ - 我更喜欢MigLayout,其次是嵌套布局,只有在被迫使用时才使用GridBagLayout。 - Nate

4

我建议直接使用GridBagLayout。虽然它有一些奇怪的行为和不好的界面,但它是一个标准布局,可以做几乎所有的事情。你将需要它,所以即使在不严格需要时也应该始终使用相同的布局管理器。


这是最强大的一个,也是我唯一使用的一个。 - willcodejavaforfood

1

对于如此简单的布局,使用GridBagLayout是杀鸡焉用牛刀。我会尽可能避免使用GridBagLayout - 如果可以的话,请使用嵌套的JPanel或MigLayout(外部jar)。


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

0

我认为你不能使用BorderLayout来实现这个。容器的约束将优先于首选大小。

对于手动编码,我建议看一下MiG Layout


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接