博学谷——让IT教学更简单,让IT学习更有效
4、 设计思路(实现原理)
1) 编写类Example06,创建一个名为“流式布局”的窗体。 2) 设置窗体中的布局管理器为FlowLayout。
3) 创建1个按钮,并为按钮添加点击事件,每点击一次按钮就再生成新的按钮。
二、案例实现
import java.awt.*; import java.awt.event.*; public class Example06 { }
public static void main(String[] args) { }
final Frame f = new Frame(\流式布局\创建一个名为流式布局的窗体
// 设置窗体中的布局管理器为FlowLayout,所有组件左对齐,水平间距为25,垂直间距为25 f.setLayout(new FlowLayout(FlowLayout.LEFT, 25, 25)); f.setSize(200, 300); // 设置窗体大小 f.setLocation(300, 200); // 设置窗体显示的位置 Button but1 = new Button(\创建第1个按钮
f.add(but1); // 把\第1个按钮\添加到f窗口 // 下面的代码是每点击一次“1”就向窗体中添加一个按钮
but1.addActionListener(new ActionListener() { // 动作事件为第1个按钮添加点击事件
private int num = 1; // 定义变量num,记录按钮的个数 public void actionPerformed(ActionEvent e) { }
f.add(new Button(++num));// 向窗体中添加新按钮
// f.setVisible(true); // 刷新窗体显示新按钮
});
f.setVisible(true); // 设置窗体可见
运行结果如图3-8所示。
11
博学谷——让IT教学更简单,让IT学习更有效
图9-9 运行结果
三、案例总结
1、FlowLayout布局管理器的特点就是可以将所有组件像流水一样依次进行排列,不需要用户明确的设定,但是在灵活性上相对差了点。
2、FlowLayout对象有三个构造方法,如下表所示。 方法声明 FlowLayout() FlowLayout(int align) 功能描述 组件默认居中对齐,水平、垂直间距默认为5个单位 指定组件相对于容器的对齐方式,水平、垂直间距默认为5个单位 FlowLayout(int align,int hgap,int vgap) 指定组件的对齐方式和水平、垂直间距 案例9-7 BorderLayout布局管理器 一、案例描述
1、 考核知识点
编号:00109009
名称:BorderLayout布局管理器
2、 练习目标
? 掌握BorderLayout布局管理器的使用
3、 需求分析
BorderLayout(边界布局管理器)是一种较为复杂的布局方式,它将容器划分为五个区域,分别是东(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)。为了让初学者熟悉BorderLayout布局,本案例演示一下BorderLayout布局管理器对组件布局的效果。
4、 设计思路(实现原理)
1) 编写类Example07,创建一个名为“边界布局”的窗体 2) 设置窗体中的布局管理器为BorderLayout
3) 创建5个按钮,分别用于填充BorderLayout的5个区域 4) 将创建好的按钮添加到窗体中,并设置按钮所在的区域
二、案例实现
import java.awt.*; public class Example07 {
public static void main(String[] args) {
final Frame f = new Frame(\边界布局\
f.setLayout(new BorderLayout()); // 设置窗体中的布局管理器 f.setSize(300,300);
12
博学谷——让IT教学更简单,让IT学习更有效
}
}
f.setLocation(300, 200); f.setVisible(true);
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); f.add(but3,BorderLayout.SOUTH); f.add(but4,BorderLayout.NORTH); f.add(but5,BorderLayout.CENTER);
// 设置按钮所在区域
运行结果如图9-10所示。
图9-10 运行结果
三、案例总结
1、在BorderLayout布局管理器中,组件组件可以被放置在这五个区域的中任意一个。BorderLayout
布局的效果如图9-11所示。
图9-11 BorderLayout效果图
13
博学谷——让IT教学更简单,让IT学习更有效
BorderLayout的好处就是可以限定各区域的边界,当用户改变容器窗口大小时,各个组件的相对位置不变。但需要注意的是,向BorderLayout的布局管理器添加组件时,如果不指定添加到哪个区域,则默认添加到CENTER区域,并且每个区域只能放置一个组件,如果向一个区域中添加多个组件时,后放入的组件会覆盖先放入的组件。
案例9-8 GridLayout布局管理器 一、案例描述
1、 考核知识点
编号:00109010
名称:GridLayout布局管理器
2、 练习目标
? 掌握GridLayout布局管理器的使用
3、 需求分析
GridLayout(网格布局管理器)使用纵横线将容器分成n行m列大小相等的网格,每个网格中放置一个组件。为了让初学者熟悉GridLayout布局管理器,本案例将演示GridLayout布局的用法。
4、 设计思路(实现原理)
1) 编写类Example08,创建一个名为\网格布局\的窗体。 2) 设置该窗体为4*3的网格。
3) 循环添加12个按钮到GridLayout中
二、案例实现
import java.awt.*; public class Example08 { }
public static void main(String[] args) { }
Frame f = new Frame(\网格布局\
f.setLayout(new GridLayout(4, 3));// 设置该窗体为4*3的网格 f.setSize(300, 300); // 设置窗体大小 f.setLocation(400, 300);
// 下面的代码是循环添加12个按钮到GridLayout中 for (int i = 1; i <= 12; i++) { }
f.setVisible(true);
Button btn = new Button(\f.add(btn); // 向窗体中添加按钮
运行结果如图9-12所示。
14
博学谷——让IT教学更简单,让IT学习更有效
图9-12 运行结果
三、案例总结
1、GridLayout中有三个构造方法,如下所示。 方法声明 GridLayout() GridLayout(int rows,int cols) GridLayout(int rows,int cols,int hgap,int vgap) 指定容器的行数和列数 指定容器的行数和列数以及组件之间的水平、垂直间距 功能描述 默认只有一行,每个组件占一列 2、GridLayout布局管理器的特点是组件的相对位置不随区域的缩放而改变,但组件的大小会随之改变,组件始终占据网格的整个区域。缺点就是总是忽略组件的最佳大小,所有组件的宽高都相同。
案例9-9 GridBagLayout布局管理器 一、案例描述
1、 考核知识点
编号:00109011
名称:GridBagLayout布局管理器
2、 练习目标
? 掌握GridBagLayout布局管理器的使用。
3、 需求分析
GridBagLayout(网格包布局管理器)是最灵活、最复杂的布局管理器。与GridLayout布局管理器类似,不同的是,它允许网格中的组件大小各不相同,而且允许一个组件跨越一个或者多个网格。为了让初学者熟悉 GridBagLayout的布局,本案例将来演示GridBagLayout的用法。
4、 设计思路(实现原理)
1)定义一个类Layout继承自Frame类 2)使用网格包布局管理器
15