无布局管理器布局

   

要采用无布局管理器布局,首先要取消Swing默认的布局管理器,否则布局方法不会生效。其方法是调用容器的setLayout方法,并将布局管理器设置为null。取消默认的布局管理器之后,就可以使用GUI组件的setLocation()、setSize()、setBounds()等布局方法来对GUi组件的位置、大小进行设置。常用方法如下:

函数

作用

setLacationjava.awt.Point

setLacation(int,int)

设置组件的坐标位置

setSizejava.awt.Dimension

setSize(int,int)

设置组件的大小

setBoundsjava.awt.Rectangle

setBounds(int,int,int,int)

同时设置组件的坐标位置和大小。setBounds(int,int,int,int)的四个参数分别代表组件的坐标(x,y)和组件的宽、高。

示例:

public class Test extends JFrame {
    public Test(){
        JPanel jp=new JPanel();
        setContentPane(jp);
                                        
        JTextField tf=new JTextField("文本框");
        JButton jb=new JButton("按钮");
                                                
        //设置布局为null
        setLayout(null);
        //设置文本框的位置(20.20),宽200,高100
        tf.setBounds(20, 20, 200, 100);
        jp.add(tf);
                                        
        //设置按钮的位置和大小
        jb.setBounds(20, 200, 100, 20);
        //下面两句和上边一句是等价的
//      jb.setLocation(20, 200);
//      jb.setSize(100, 20);
        jp.add(jb);
                                        
        //设置可见。大小位置、默认退出方式
        setVisible(true);
        setBounds(200, 200, 400, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new Test();
    }
}

结果:

104004114.jpg


程序运行结果如上图所示。

无布局管理器布局在对组件的大小和位置的控制上较为灵活,但是这种布局方式会导致平台相关,在不同的平台上会产生不同的显示效果。并且在窗体发生变化时,有可能进行重新布局。基于布局管理器的布局就可以很好的解决上面两个问题。