有没有办法在BorderLayout的中心保留JButton的自然大小?现在,它向所有方向扩展以填补它,但我希望它正常大小。
如果无法实现,我怎样才能让按钮位于面板正中央?
答案 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。