Pla*_*win 0 java swing layout-manager 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);
    }
}
我可以至少调整JTextField的大小,以免占用整个空间吗?
BoxLayout将调整组件的大小以填充面板中的空间,直到组件的最大大小.文本字段没有最大大小.
您可以通过控制最大大小来防止文本字段增长:
panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
JTextField textField = new JTextField(10);
textField.setMaximumSize( textField.getPreferredSize() );
panel.add( textField );
| 归档时间: | 
 | 
| 查看次数: | 1260 次 | 
| 最近记录: |