1、BorderLayout布局管理器

构造方法:

BorderLayout() //构造一个新的边框布局,组件之间没有间隙。  
BorderLayout(int hgap, int vgap) //构造具有组件之间指定间隙的边框布局。  指定垂直和水平间距

字段:

static String AFTER_LAST_LINE //PAGE_END的同义词。  
static String AFTER_LINE_ENDS //LINE_END的同义词。  
static String BEFORE_FIRST_LINE //PAGE_START的同义词。  
static String BEFORE_LINE_BEGINS //LINE_START的同义词。  
static String CENTER //中心布局约束(容器中间)。  
static String EAST //东部布局约束(容器的右侧)。  
static String LINE_END //组件位于布局的行方向的末尾。  
static String LINE_START //组件位于布局的行方向的开头。  
static String NORTH //北布局约束(容器顶部)。  
static String PAGE_END //该组件位于布局内容的最后一行之后。  
static String PAGE_START //该组件位于布局内容的第一行之前。  
static String SOUTH //南布局约束(容器底部)。  
static String WEST //西部布局约束(容器的左侧)。

例子:

import java.applet.Applet;
import java.awt.*;

public class demo09 extends Applet {
    @Override
    public void init() {
        Panel panel = new Panel();
        Button north = new Button("north");
        Button sourth = new Button("Sourth");
        Button east = new Button("east");
        Button west = new Button("west");
        Button center = new Button("center");

        panel.setLayout(new BorderLayout(2,2));
        panel.add(north,BorderLayout.NORTH);//指定按钮布局在NORTH
        panel.add(sourth,BorderLayout.SOUTH);
        panel.add(east,BorderLayout.EAST);
        panel.add(west,BorderLayout.WEST);
        panel.add(center,BorderLayout.CENTER);
        setLayout(new BorderLayout());
        add(panel,BorderLayout.CENTER);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i8PfG1Tg-1612105856214)(D:\u(backups)]\note\java GUI\img\21-1.JPG)

2、CardLayout布局管理器

CardLayout跟踪一 个构件的卡片组。

构造方法:

CardLayout() 创建一个大小为零的新卡片布局。  
CardLayout(int hgap, int vgap) 创建具有指定水平和垂直间隙的新卡片布局。

CardLayout方法:

方法

描述

void first(Container)

显示第一个添加到容器中的构件

void last(Container)

显示最后一个添加到容器中的构件

void next(Container)

显示当前构件后加入到容器中的构件。如果当前是最后一个构件,那么显示第一个构件

void previous(Container)

显示在当前显示构件前加入到容器中的构件。如果当前构件是第一个,那么显示最后一个构件

void show(Container,String)

显示名称和传递的字符串相匹配的构件。如果没有构件匹配,则为空操作

例:

import java.applet.Applet;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.Field;

public class demo09 extends Applet {
   public Button one,two,three;
   public CardLayout card = new CardLayout();

    @Override
    public void init() {
        final Panel panel = new Panel();
        one = new Button("one");
        two = new Button("two");
        three = new Button("three");

        panel.setSize(200,200);
        one.setSize(50, 50);
        one.setBackground(Color.BLUE);
        two.setSize(100, 100);
        two.setBackground(Color.yellow);
        three.setSize(150, 150);
        three.setBackground(Color.BLACK);

        panel.setLayout(card);
        panel.add(one);
        panel.add(two);
        panel.add(three);

        setLayout(new CardLayout());
        add(panel);


        ActionListener al = new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                card.next(panel);//显示下一个添加到panel里面的构件
            }
        };

        one.addActionListener(al);
        two.addActionListener(al);
        three.addActionListener(al);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zEOCN8BE-1612105856216)(D:\u(backups)]\note\java GUI\img\21-3.JPG)

3、FlowLayout布局管理器

FlowLayout仅仅是从左到右、从上到下地布置构件。与BorderL ayout 一样,它是一个基本的布局管理器,可以在许多布置环境下方便地使用。但与BorderLayout 不同的是,FlowLayout不实现LayoutManager2接口,不需要对它布置的构件设置约束条件。

构造方法:

FlowLayout() //构造一个新的 FlowLayout ,其中心对齐和默认的5单位水平和垂直间隙。  
FlowLayout(int align) //构造一个具有指定对齐和默认5单位水平和垂直间隙的新 FlowLayout。
FlowLayout(int align, int hgap, int vgap) //创建一个新的流布局管理器,其中包含指示的对齐方式以及指示的水平和垂直间隙。

字段:

static int CENTER //该值表示每行组件应居中。  
static int LEADING //此值表示每行组件应对齐到容器方向的前沿,例如,从左到右的方向向左。  
static int LEFT //此值表示每行组件应左对齐。  
static int RIGHT //此值表示每行组件应右对齐。  
static int TRAILING //此值表示每行组件应对齐到容器方向的后缘,例如,从左到右方向向右。

例:

import java.applet.Applet;
import java.awt.*;

public class demo09 extends Applet {

    @Override
    public void init() {
        Panel panel = new Panel();
        Button button1 = new Button("1");
        Button button2 = new Button("2");
        Button button3 = new Button("3");
        Button button4 = new Button("4");
        Button button5 = new Button("5");
        Button button6 = new Button("6");

        panel.setLayout(new FlowLayout(FlowLayout.LEFT,10,5));
        panel.setSize(50,200);

        panel.add(button1);
        panel.add(button2);
        panel.add(button3);
        panel.add(button4);
        panel.add(button5);
        panel.add(button6);

        setLayout(new BorderLayout());
        add(panel,BorderLayout.NORTH);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dKBYF5QZ-1612105856216)(D:\u(backups)]\note\java GUI\img\21-2.JPG)

4、GridLayout布局管理器

GridLayout 在一个网格中布置构件,客户程序可以在构造GridLayout时或在构造好以后设置构件的间隙和行数列数。当在 applet 中布置电子表格或日历这样的构件时,GridLayout很有用。

构造方法:

GridLayout() //在单行中创建一个网格布局,每个组件的默认值为一列。  
GridLayout(int rows, int cols) //创建具有指定行数和列数的网格布局。  
GridLayout(int rows, int cols, int hgap, int vgap) //创建具有指定行数和列数的网格布局。

方法:

void setColumns(int cols) //将此布局中的列数设置为指定值。  
void setHgap(int hgap) //将组件之间的水平间隙设置为指定值。  
void setRows(int rows) //将此布局中的行数设置为指定值。  
void setVgap(int vgap) //将组件之间的垂直间距设置为指定值。

例:

import java.applet.Applet;
import java.awt.*;

public class demo09 extends Applet {

    @Override
    public void init() {
        Panel panel = new Panel();
        Button button1 = new Button("1");
        Button button2 = new Button("2");
        Button button3 = new Button("3");
        Button button4 = new Button("4");
        Button button5 = new Button("5");
        Button button6 = new Button("6");
        Button button7 = new Button("7");
        Button button8 = new Button("8");
        Button button9 = new Button("9");

        panel.setLayout(new GridLayout(4,5));


        panel.add(button1);
        panel.add(button2);
        panel.add(button3);
        panel.add(button4);
        panel.add(button5);
        panel.add(button6);
        panel.add(button7);
        panel.add(button8);
        panel.add(button9);

        setLayout(new BorderLayout());
        add(panel,BorderLayout.NORTH);
    }
}