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

4

2 回答 2

2

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

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

按钮的最大尺寸是它的“首选尺寸”,所以如果你想让按钮变大,你需要重写getMaximumSize()按钮的方法来返回至少是你的框架大小的尺寸。

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

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

阅读 Swing 教程中有关使用布局管理器的部分,以获取有关上述内容的更多信息。

于 2018-05-02T14:58:06.313 回答
0

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

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

这应该适合你

于 2018-05-02T08:29:28.743 回答