如何让JButton填充他的父BoxLayout

时间:2018-05-02 08:14:22

标签: java swing layout-manager 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一样填充父布局。那么什么财产控制了它?

2 个答案:

答案 0 :(得分:1)

  

我想让JButton像JTextField一样填充父布局。那么什么财产控制了它?

BoxLayout尊重"最大尺寸"组件。

按钮的最大大小是"首选大小",因此如果您希望按钮增长,则需要覆盖按钮的getMaximumSize()方法以至少返回维度框架的大小。

或者您可以使用的评论中提到:

  1. a GridLayout以使所有组件的大小相同
  2. 一个GridBagLayout,允许组件根据需要增长。
  3. 阅读Using Layout Managers上Swing教程中的部分,了解有关上述内容的更多信息。

答案 1 :(得分:0)

尝试使用BorderLayout进行快速解决方案。

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

这应该对你有用