为 Java GUI 程序设计而设计的 API 是应用面向对象原理的绝佳范例
GUI 全称是 Graphical User Interface,简单的说是图形用户界面
GUI 只有在桌面操作系统中才存在
Swing 和 AWT
不依赖于自己 GUI 的 Swing 组件称为轻量级组件(即对系统依赖性较弱),而 AWT 组件称为重量级组件(对系统依赖性较强)
AWT 用户界面组件终究是要退出历史舞台,但是 Swing 组件不能取代 AWT 中的全部类,只能替代 AWT GUI 的组件类,AWT 辅助类在 GUI 程序设计中仍然很有用
AWT 缺点
AWT 组件最大的缺陷就是它依赖于操作系统,也就是说 AWT 程序运行在不同的操作系统上会有不同的外观和行为,这和 Java 的平台无关性是不符合的
Swing 优点
Swing 组件是在 AWT 组件上发展而来的轻量级组件,与 AWT 相比不但改进了用户界面,而且所需的系统资源更少
Swing 是纯 Java 组件,使得应用程序在不同的平台上运行时具有相同的外观和相同的行为
Java GUI API
GUI API 包含的类可以分成三个组:组件类(component class)、容器类(container class)和辅助类(helper class)
组件类是用来创建用户界面的,例如:JButton、JLable 和 JTextField
容器类是用来包含其他组件的,例如:JFrame、JPanel 和 JApplet
辅助类是用来支持 GUI 组件,例如:Graphics、Color、Font、FontMetrics 和 Dimension
组件类
Component 类的实例可以显示在屏幕上,是包括容器类的所有用户界面类的根类
JComponent 类是所有轻量级 Swing 组件类的根类
Component 类和 JComponent 类都是抽象类
容器类
一个 Container 的实例可以包含 Component 实例
容器类是用于盛装其他 GUI 组件的 GUI 组件
1 | 容器类 说 明 |
GUI 辅助类
辅助类都不是 Component 的子类,它们用来描述 GUI 组件的属性,例如:图形的内容、颜色、字体以及大小尺寸等
1 | 辅助类 说 明 |
框架
创建一个用户界面需要创建一个框架或一个 applet 来存放用户界面组件
布局管理器
可以动态地改变布局管理器的属性
FlowLayout(流式布局)具有属性 alignment、hgap 和 vgap,可以使用 setAlignment、setHgap 和 setVgap 方法来表明对齐方式、水平间隔和垂直间隔
GridLayout(网格布局)具有属性 rows、columns、hgap 和 vgap,可以使用 setRows、setColums、setHgap 和 setVgap 方法来指定行数、列数以及水平间隔和垂直间隔
BorderLayout(边界布局)具有属性 hgap 和 vgap,可以使用 setHgap 和 setVgap 方法来指定水平间隔和垂直间隔
框架默认的布局是 BorderLayout,所以在框架中想要使用 BorderLayout,可以不进行指定,直接使用即可,JPanel 默认的布局是FlowLayout 即流式布局
Swing GUI 组件的公共特性
Component 类是所有 GUI 组件和容器的根,所有 Swing GUI 组件(除了 JFrame、JApplet 和 JDialog)都是 JComponent 的子类
Swing GUI 组件常用的操作方法
所有 Swing GUI 组件都继承 Component、Container 和 JComponent 的公共方法