312
跟我学 Java
本章之前的所有应用程序都是命令行界面,没有特定的用户输入界面。从本章开始,将要
学习图形界面编程。对于一个软件来说,不但要有比较强大完善的功能,而且还要有一个简
313
图形界面编程
13
洁美观的界面。本章主要学习如何进行图形界面编程。其中包括 AWT 和 Swing 两部分内容。
◎ Swing 基础
◎ 事件
◎ Swing 组件
◎ 布局管理器
A
WT
简介
13.1
AWT 的全称是抽象窗口工具集(Abstract Window Toolkit)。它是一个特殊的组件,其中包
含有其他的组件。它的库类也非常丰富,包括了创建 Java 图形界面程序的所有工具。用户可以
利用 AWT,在容器中创建标签、按钮、复选框、文本框等用户界面元素。
AWT 中包括了图形界面编程的基本类库。它是 Java 语言 GUI 程序设计的核心,它为用户
提供基本的界面构件。这些构件是为了使用户和机器之间能够更好地进行交互,而用来建立图
形用户界面的独立平台。其中主要由以下几部分组成,包括:组件类(Component)、容器类
(Container)、图形类(Graphics)和布局管理器(LayoutManager)。
¾ Component(组件)——按钮、标签、菜单等组件的抽象基本类。
¾ Container(容器)——扩展组件的抽象基本类。如 Panel、Applet、Window、Dialog 和 Frame
等是由 Container 演变的类,容器中可以包括多个组件。
¾ LayoutManager(布局管理器)——定义容器中组件摆放位置和大小接口。Java 中定义了
几种默认的布局管理器。
¾ Graphics(图形类)——组件内与图形处理相关的类,每个组件都包含一个图形类的对象。
在 AWT 中存在缺少剪贴板、缺少打印支持等缺陷,甚至没有弹出式菜单和滚动窗口等,
314
跟我学 Java
因此 Swing 的产生也就成为必然。Swing 是纯 Java 实现的轻量级(light-weight)组件,它不依赖
系统的支持。本章主要讨论 Swing 组件基本的使用方法和使用 Swing 组件创建用户界面的初步
方法。
S w ing 基础
13.2
Swing 元素的屏幕显示性能要比 AWT 要好,而且 Swing 是使用纯 Java 来实现的。所以 Swing
也理所当然地具有 Java 的跨平台性。但 Swing 并不是真正使用原生平台提供设备,而是仅仅在
模仿。因此,可以在任何平台上来使用 Swing 图形用户界面组件。它不必在它们自己本地窗口中
绘制组件,而是在它们所在的重量级窗口中绘制,因为 Swing 绝大部分是轻量级的组件。
AWT 组件具有平台相关性,它是系统对等类的实现;而 Swing 组件在不同平台
具有一致性的表现,另外还可以提供本地系统不支持的一些特征。因此 Swing 比 AWT
的组件实用性更强。Swing 采用了 MVC(模型-视图-控制,Model-View-Controller)
设计
模式。
注意
13.2.1 Swing 的类层次结构
Javax.swing 包中有顶层容器和轻量级两种类型的组件,Swing 轻量级的组件都是由
AWT 的 Container 类来直接或者是间接派生而来的。
java.awt.Component
+-java.awt.Container
+-java.awt.Window
+-java.awt.Frame-javax.swing.JFrame
+-javax.Dialog-javax.swing.JDialog
+-javax.swing.JWindow
+-java.awt.Applet-javax.swing.JApplet
+-javax.swing.Box
+-javax.swing.Jcomponet
Swing 包是 JFC(Java Foundation Classes)的一部分,它由许多包组成,如表 13-1 所示。
表 13-1 Swing 包组成内容
包 描 述
Com.sum.swing.plaf.motif 实现 Motif 界面样式代表类
Com.sum.java.swing.plaf.windows 实现 Windows 界面样式的代表类
315
图形界面编程
13
javax.swing Swing 组件和使用工具
javax.swing.border Swing 轻量组件的边框
javax.swing.colorchooser JcolorChooser 的支持类/接口
javax.swing.event 事件和侦听器类
javax.swing.filechooser JFileChooser 的支持类/接口
javax.swing.pending 未完全实现的 Swing 组件
javax.swing.plaf 抽象类,定义 UI 代表的行为
javax.swing.plaf.basic 实现所有标准界面样式公共基类
javax.swing.plaf.metal 它们实现 Metal 界面样式代表类
javax.swing.table Jtable 组件
javax.swing.text 支持文档的显示和编辑
javax.swing.text.html 支持显示和编辑 HTML 文档
javax.swing.text.html.parser HTML 文档的分析器
javax.swing.text.rtf 支持显示和编辑 RTF 文件
javax.swing.tree Jtree 组件的支持类
javax.swing.undo 支持取消操作
在表 13-1 所示的包中,javax.swing 是 Swing 所提供最大的包,其中包含有 100 个类和 25
个接口,并且绝大部分的组件都包含在 Swing 包中。
¾ javax.swing.event 包中定义了事件和事件处理类,这与 java.awt.event 包类似,主要包括
事件类和监听器接口、事件适配器。
¾ javax.swing.pending 包主要是一些没有完全实现的组件。
¾ javax.swing.table 包中主要是 Jtable 类的支持类。
¾ javax.swing.tree 包同样也是 Jtree 类的支持类。
¾ javax.swing.text、javax.swing.text.html、javax.swing.text.html.parser 和 javax.swing.text.rtf
包都是与文档显示和编辑相关的包。
13.2.2 Swing 特点
¾ 组件的多样化:虽然 AWT 是 Swing 的基础,但是 Swing 中却提供了比 AWT 更多的
图形界面组件。而且 Swing 中组件的类名都是由字母“J”开头,还增加了一些比较复
杂的高级组件,如 JTable、JTree。
¾ MVC 模式:MVC 模型的普遍实用性是 Swing 比较突出的特点。其主要包括有模型、
视图、控制器 3 部分结构。模型用于保存所用到的数据,视图则用于显示数据的内容,
控制器用于处理用户和模块交互事件。MVC 设计思想是图形用户界面设计比较通用,
这样可以使内容本身和显示方式分类,使数据显示更加灵活多变。
¾ 可存取性支持:Swing 的所有组件为了实现对可存取的支持而实现了 Accessible 接口。
¾ 支持键盘操作:在 Swing 中支持传统意义上的热键操作,这样就可以替代用户鼠标操作。
- 1
- 2
前往页