如何让 JButton 填充他的父 BoxLayout

How to make a JButton fill his parent BoxLayout

JFrame frame = new JFrame();
frame.setSize(400, 300);
JPanel panel = new JPanel() {{
    setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
    add(new JButton("button"));
    add(new JTextField("Text"));
}};

frame.setContentPane(panel);
frame.setVisible(true);

我想让 JButton 像 JTextField 一样填充父布局。那是什么属性控制的呢?

尝试使用 BorderLayout 快速解决。

setLayout(new BorderLayout(0,0));
add(new JButton("button"),BorderLayout.WEST);
add(new JTextField("Text"),BorderLayout.CENTER);

这应该适合你

I want to make JButton fill parent layout like JTextField. So what property controlled it?

BoxLayout 尊重组件的 "maximum size"。

按钮的最大尺寸是它的 "preferred size",所以如果你想让按钮变大,你需要覆盖按钮的 getMaximumSize() 方法到 return 的尺寸至少你的框架大小。

或者如评论中所述,您可以使用:

  1. a GridLayout 使所有组件大小相同
  2. a GridBagLayout 允许组件根据需要增长。

阅读有关 Using Layout Managers 的 Swing 教程部分,了解有关上述内容的更多信息。