图形用户界面(GUI全称是Graphical User Interface),是用户与应用程序交互的窗口。Java的图形用户界面由各种组件(component)组成。Java提供了丰富的类库用于GUI设计,这些类分别位于java.awt包和javax.swing包中,简称为AWT和Swing。
AWT是Abstract Window Toolkit抽象窗口工具集的缩写,目的是为了让开发人员使用AWT开发出适用于所有系统的图形界面,但是在旧的JDK版本中目标没有达到,在实际使用中,使用AWT设计的界面在不同平台太上会呈现不同的运行效果,如字体效果会发生变化等。为了更好的实现GUI开发,在JDK1.2版本之后新增Swing工具包作为AWT的扩展。Swing是在AWT基础上发展而来的轻量级组件,不仅改进了用户界面,而且所需系统资源更少,Swing是纯Java组件,完全实现了跨平台。
因为AWT不再是图形界面开发的主流,所以,本书该章节将只针对图形用户界面的Swing以及事件类、事件接口进行讲解。
设计Java图形用户界面的基本元素主要由图形用户界面工具包Swing提供,Swing包是AWT之后一套新的图形用户接口,包括用户界面组件、事件处理模型、图形和图像工具、布局管理器等。Swing是完全使用Java代码编写的,所以同Java本身一样可以跨平台运行,它为大规模的GUI开发提供了丰富的基础结构。
Swing具有如下特点:
在Java语言中构成GUI的各类元素称为组件(Component),构建GUI的类可以分为三组:容器类、辅助类和组件类。
容器类是指用来包含其他组件的类,包括顶层容器和非顶层容器。顶层容器主要有Jframe、Japplet和Jdialog等,可以独立存在,具有放大、缩小、移动等功能。非顶层容器主要有Jpanel、JscrollPanel和JToolBar等,不能独立存在,必须放入窗口才能显示。
辅助类是用来描述组件信息的,如颜色类Color、字体类Font、绘图类Graphics等,不是Component类的子类,通常包含在java.awt包中。
在Swing组件类中,除JFrame、JApplet和JDialog都是JComponent类的子类,例如JButton、JTextArea、JList和JMenu等。Swing组件是围绕一个新的组件类JComponent建立的,JComponent是java.awt包中的Container类的子类,接下来先了解一Swing的体系结构,如图12.1所示。
Window类是不依赖于其他容器存在的窗口,有两个子孙类JFrame和JDialog,在Java GUI应用程序开发中,一般独立应用程序主要使用窗口框架JFrame作为容器,JDialog一般用作对话框使用。