如何让一个JButton填满他的父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一样填充父布局。那么是什么财产控制了它呢?

我想

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

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

按钮的最大大小是其"首选大小",因此,如果您希望按钮增大,则需要重写按钮的getMaximumSize()方法,以返回至少与框架大小相同的尺寸。

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

  1. 使所有组件具有相同尺寸GridLayout
  2. 允许组件根据需要增长的GridBagLayout

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

尝试使用BorderLayout快速解决问题。

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

这应该适合您

最新更新