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()
方法,以返回至少与框架大小相同的尺寸。
或者如您可以使用的评论中所述:
- 使所有组件具有相同尺寸
GridLayout
- 允许组件根据需要增长的
GridBagLayout
。
阅读 Swing 教程中有关使用布局管理器的部分,了解有关上述内容的更多信息。
尝试使用BorderLayout
快速解决问题。
setLayout(new BorderLayout(0,0));
add(new JButton("button"),BorderLayout.WEST);
add(new JTextField("Text"),BorderLayout.CENTER);
这应该适合您