第十一周课程总结
AWT图形界面
AWT简介
抽象窗口工具包(Abstract Window Tookit)是为java程序提供建立图形用户界面(Graphics User Interface GUI)的工具集。主要包含如下组件:
1. 用户界面组件
2. 事件处理模型
3. 图形图像工具(形状、颜色、字体)
4. 布局管理器
AWT的优势:
-
最早的JAVA GUI包,内嵌到JDK中,无需引入其他类,功能稳定
-
AWT组件都是线程安全的
-
界面编程基础. 学会AWT, 很容易去学swing/SWT等功能较强大的GUI组件.
基本容器JFrame
1.JFrame 类窗体:窗口(默认不显示,方法setViserble(true/false),显示或则不显示)
注意:可以设置窗口本身位置,大小(像素),颜色,标题,
JFrame.setTitle(String name):窗口标题
JFrame.setSize(int x,int y):大小(像素)
JFrame.setLocation(int x,int y):窗口位置(表示窗口左上角在(x,y)位置)
JFrame.setViserble(true/false):默认不显示窗口
JFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE):彻底结束该窗口(不设置时默认只是关闭了窗口,没有结束任务管理器中的进程)
JFrame.add(Button anniu):添加按钮
2、JButton
JButton类:组件(按钮)
JButton anniu=new JButton(String name):初始化按钮传入名字参数
JButton.setSize(int x,int y):如果不设置按钮的大小的话,按钮默认会充斥整个窗口
add(open);添加按钮,但是没有设置按钮大小(会充斥整个窗口),位置,点击时执行的触发的动作(没有监听)
add(close);添加按钮,但是没有设置按钮大小(会充斥整个窗口),位置,点击时触发的动作(没有监听)
setTitel("用户界面");类方法之设置窗口标题
setSize(250,250);类方法之设置窗口大小
setLocation(50,60);类方法之设置窗口位置
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);类方法之设置点关闭后进程结束,释放内存(不然打开一个进程多一个,资源被占用)
3.标签组件JLabel
标签有 JLabel 类定义,它的父类为 JComponet 类。
标签可以显示一行只读文本、一个图像或带图像的文本。
它并不能产生任何类型的事件,只能简单地展示图片和文本,
但是可以使用标签的特性指定标签上文本的对齐方式。
JLabel类提供了多种构造方法,可以创建多种标签,如展示只有文本的标签、
只有图标的标签或包含文本和图标的标签。
布局管理器
1.FlowLayout------像水流一样依次进行排列(流式)
import java.awt.*;
import javax.swing.*;
public class FlowLayoutDemO1 {
public static void main(String[] args) {
JFrame frame = new JFrame("Hello");// 实例化窗体对象
frame.setLayout(new FlowLayout(FlowLayout.CENTER,3,3));//所有组件居中对齐,水平和垂直间距为3
JButton button = null;
for(int i=0; i<9; i++){
button = new JButton("按钮 - "+i);
frame.add(button);//加入按钮
}
frame.setSize(28,14);//设置窗体大小
frame.setVisible(true);//设置窗体可见
}
}
2、BorderLayout------分东南西北中五个区域
import java.awt.*;
import javax.swing.*;
public class BorderLayoutDemO1 {
public static void main(String[] args) {
JFrame frame = new JFrame("Hello");// 实例化窗体对象
frame.setLayout(new BorderLayout(3, 3));// 水平和垂直间距都是3
frame.add(new JButton("East"), BorderLayout.EAST);
frame.add(new JButton("South"), BorderLayout.SOUTH);
frame.add(new JButton("West"), BorderLayout.WEST);
frame.add(new JButton("North"), BorderLayout.NORTH);
frame.add(new JButton("Center"), BorderLayout.CENTER);
frame.pack();//根据组件自动调整窗体的大小
frame.setLocationRelativeTo(null);//居中
frame.setVisible(true);//设置窗体可见
}
}
3、GridLayout------以表格形式进行排列,必须设置行数和列数
import java.awt.*;
import javax.swing.*;
public class GridLayout {
public static void main(String[] args) {
JFrame frame = new JFrame("Hello");// 实例化窗体对象
frame.setLayout(new GridLayout(4,4,3,3));//4*4进行排列,水平和垂直间距都是3
JButton button = null;
for(int i=0; i<13; i++){
button = new JButton("按钮 - "+i);
frame.add(button);//加入按钮
}
frame.pack();//根据组件自动调整窗体的大小
frame.setLocationRelativeTo(null);//居中
frame.setVisible(true);//设置窗体可见
}
4.CardLayout------将组件彼此重叠地进行布局,像一张张卡片一样,会彼此重叠,每次只展现一个界面
两种组件定位机制:绝对定位和布局定位。
绝对定位就是一种最原始的定位方法:给出这个组件的坐标和长宽值(设置每一个组件的具体位置)