- 组件在容器里的位置和尺寸是由布局管理器来决定的
- java.awt包中提供了五种布局管理器,分别是FlowLayout(流式布局管理器)、BorderLayout(边界布局管理器)、GridLayout(网格布局管理器) 、GridBagLayout(网格包布局管理器) 、 CardLayout(卡片布局管理器)
Frame frame = new Frame();
frame.setlayout(new FlowLayout());
一、FlowLayout 流式布局管理器
容器会将组件按照添加顺序从左向右放置
package cn.itcast.chapter08.example02;
import java.awt.*;
public class Example02 {
public static void main(String[] args) {
// 创建一个名为Flowlayout的窗体
final Frame f = new Frame("Flowlayout");
// 设置窗体中的布局管理器为FlowLayout,所有组件左对齐,水平间距为20,垂直间距为30
f.setLayout(new FlowLayout(FlowLayout.LEFT, 20, 30));
// 设置窗体大小
f.setSize(500, 300);
// 设置窗体显示的位置
f.setLocation(300, 200);
f.add(new Button("第1个按钮")); // 把"第1个按钮"添加到f窗口
f.add(new Button("第2个按钮"));
f.add(new Button("第3个按钮"));
f.add(new Button("第4个按钮"));
f.add(new Button("第5个按钮"));
f.add(new Button("第6个按钮"));
// 设置窗体可见
f.setVisible(true);
}
}
二、BorderLayout 边界布局管理器
它将容器划分为五个区域,分别是EAST, SOUTH, WEST, NORTH, CENTER
package cn.itcast.chapter08.example03;
import java.awt.*;
public class Example03 {
public static void main(String[] args) {
final Frame f = new Frame("BorderLayout");// 创建一个名为BorderLayout的窗体
f.setLayout(new BorderLayout()); // 设置窗体中的布局管理器为BorderLayout
f.setSize(300, 300); // 设置窗体大小
f.setLocation(300, 200);// 设置窗体显示的位置
f.setVisible(true); // 设置窗体可见
// 下面的代码是创建5个按钮,分别用于填充BorderLayout的5个区域
Button but1 = new Button("东部"); // 创建新按钮
Button but2 = new Button("西部");
Button but3 = new Button("南部");
Button but4 = new Button("北部");
Button but5 = new Button("中部");
// 下面的代码是将创建好的按钮添加到窗体中,并设置按钮所在的区域
f.add(but1, BorderLayout.EAST); // 设置按钮所在区域
f.add(but2, BorderLayout.WEST); //container类的一个对象
f.add(but3, BorderLayout.SOUTH);
f.add(but4, BorderLayout.NORTH);
f.add(but5, BorderLayout.CENTER);
}
}
三、GridLayout 网格布局管理器
package cn.itcast.chapter08.example04;
import java.awt.*;
public class Example04 {
public static void main(String[] args) {
Frame f = new Frame("GridLayout");// 创建一个名为GridLayout的窗体
f.setLayout(new GridLayout(3, 3));// 设置该窗体为3*3的网格
f.setSize(300, 300); // 设置窗体大小
f.setLocation(400, 300);
// 下面的代码是循环添加9个按钮到GridLayout中
for (int i = 1; i <= 9; i++) {
Button btn = new Button("btn" + i);
f.add(btn); // 向窗体中添加按钮
}
f.setVisible(true);
}
}
四、GridBagLayout 网格包布局管理器
1、基本概念
2、使用步骤
(1)创建GridBabLayout布局管理器,并使容器采用该布局管理器
GridBagLayout layout = new GridBagLayout();
container.setLayout(layout);
(2)创建GridBagContainer对象(布局约束条件),并设置该对象的相关属性
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 1; //设置网格的左上角横向索引
constraints.gridy = 1; //设置网格的左上角纵
constraints.gridwidth = 1; //设置组件横向跨越的网格
constraints.gridheight = 1; //设置组件纵向跨越的网格
(3)调用GridBagLayout对象的setConstraints()方法建立GridBagConstraints对象和受控组件之间的联系
layout.setConstraints(component,constraints);
(4)向容器内添加组件
container.add(component)
五、CardLayout 卡片布局管理器
六、不使用布局管理器