java JPanel在使用BoxLayout时不会调整大小
我有一个JPanel
并设置如下:
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
然后我添加一个JTextField
,它占据了整个面板:
JTextField field = new JTextField();
panel.add(field);
但是,当我尝试调整其大小时:
panel.setPreferredSize(new Dimension(20,400));
什么都没发生。为什么?我使用BoxLayout
来按垂直顺序排列我的JLabel
和JTextField
组件。如果无法调整面板的大小,我能否至少调整JTextField
的大小,使其不占用整个空间
例如:
import java.awt.Dimension;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class GUI extends JFrame
{
public GUI() {
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
panel.setPreferredSize(new Dimension(20,400));
JTextField field1 = new JTextField();
JTextField field2 = new JTextField();
panel.add(field1);
panel.add(field2);
}
}
# 1 楼答案
BoxLayout将调整组件的大小,以填充面板中的空间,使其达到组件的最大尺寸。文本字段没有最大大小
通过控制最大大小,可以防止文本字段增长: