Java 如何使JButton填充其父框布局

Java 如何使JButton填充其父框布局,java,swing,layout-manager,boxlayout,Java,Swing,Layout Manager,Boxlayout,我想让JButton像JTextField一样填充父布局。那么是什么属性控制了它呢?尝试使用边框布局来快速解决问题 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 JTextFiel

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

尝试使用
边框布局来快速解决问题

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一样填充父布局。那么是什么财产控制了它

BoxLayout
尊重组件的“最大尺寸”

按钮的最大大小是其“首选大小”,因此,如果希望按钮增大,则需要覆盖按钮的
getMaximumSize()
方法,以返回至少与帧大小相同的尺寸

或者如您可以使用的注释中所述:

  • a
    GridLayout
    使所有组件大小相同
  • 一个
    GridBagLayout
    ,允许组件根据需要增长

  • 阅读Swing教程中关于上述内容的部分以了解更多信息。

    使用
    GridBagLayout
    ,或者如果您喜欢继续保持按钮宽度的内容,则使用
    GridBagLayout
    setLayout(new BorderLayout(0,0));
    add(new JButton("button"),BorderLayout.WEST);
    add(new JTextField("Text"),BorderLayout.CENTER);