GUI图形界面编程之布局管理器

时间:2023-01-26 16:49:46

布局管理器:实现使用不同方式排列界面上的组件。

布局管理器接口LayoutManager

使用布局管理器时,布局管理器负责各个组件大小与位置,用户无法设置组件大小与位置属性。如果使用,会被布局管理器覆盖。

如果确实需要设置组件大小与位置,应取消该容器的布局管理器。(setLayout(null))

使用setLayout()方法指定布局管理器

实现接口的类:

FlowLayout:流水型,由左到右,一行排满后换行。

                 Panel类默认布局管理器,默认居中。

构造方法

FlowLayout()
          构造一个新的 FlowLayout,它是居中对齐的,默认的水平和垂直间隙是 5 个单位。

FlowLayout(int align)
          构造一个新的 FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是 5 个单位。

FlowLayout(int align, int hgap, int vgap)
          创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水平和垂直间隙。

/**
 * FlowLayout实例
 * 2014-4-20
 */
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;

/**
 * 
 * @author Administrator
 *
 */
public class flowLayoutDemo2 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Frame f=new Frame();
        //FlowLayout fl=new FlowLayout(FlowLayout.CENTER,20,40);
        f.setBackground(Color.GREEN);
        f.setLocation(200,200);
        f.setSize(400,400);
        f.setTitle(null);
        f.setVisible(true);
        f.setResizable(true);
        //f.setLayout(fl);
        f.setLayout(new FlowLayout(FlowLayout.CENTER,20,40));
        for(int i=0;i<5;i++)
            f.add(new Button());
        

    }

}

BorderLayout:划分为东,西,南,北,中。每个区域只能加入一个组件,如果不指定,组件的加入部位,则默认加入中部

Frame类的默认布局管理器

向容器中加入组件的方法

public Component add( Component comp,
                     int index)
将指定组件添加到此容器的给定位置上。

构造方法:

BordLayout()
          构造一个组件之间没有间距的新边框布局。

BordLayout(int hgap, int vgap)
          构造一个具有指定组件间距的边框布局。

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;


public class BorderLayoutDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Frame f;
        f = new Frame("Border Layout");
        Button bn = new Button("BN");
        Button bs = new Button("BS");
        Button bw = new Button("BW");
        Button be = new Button("BE");
        Button bc = new Button("BC");
        f.setLayout(new BorderLayout(30,40));

        
        f.add(bn, BorderLayout.NORTH);
        f.add(bs, BorderLayout.SOUTH);
        f.add(bw, BorderLayout.WEST);
        f.add(be, BorderLayout.EAST);
        f.add(bc, BorderLayout.CENTER);


        f.setSize(200,200);
        f.setVisible(true);

    }

}

GirdLayout:划分成规则的矩形网格,每个单元格区域大小相等,组件被添加到每个单元格中,先从左到右添满后换行

构造方法

GirdLayout()
          创建具有默认值的网格布局,即每个组件占据一行一列。

GirdLayout(int rows, int cols)
          创建具有指定行数和列数的网格布局。

GirdLayout(int rows, int cols, int hgap, int vgap)
          创建具有指定行数和列数的网格布局。

 

import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;


public class GirdLayoutDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Frame f = new Frame("GridLayout Example");
        Button b1 = new Button("b1");
        Button b2 = new Button("b2");
        Button b3 = new Button("b3");
        Button b4 = new Button("b4");
        Button b5 = new Button("b5");
        Button b6 = new Button("b6");
        //三行两列
        f.setLayout (new GridLayout(3,2));
        f.add(b1);        
        f.add(b2);
        f.add(b3);        
        f.add(b4);
        f.add(b5);        
        f.add(b6);
        
        //f.pack();          
        f.setVisible(true);
    }

}

参考资料:尚学堂马士兵视频教程。