第一节 第二节 第三节 第四节 第五节 第六节 第七节 第八节 第九节 第十节 第十一节
第一节    AWT与Swing
1. AWT
AWT(Abstract Window Toolkit)是一个独立平台的窗口工具组件集,它依赖于对等组件(Peer),而对等组件是一个本地GUI组件,由AWT类管理。AWT的作用是给用户提供基本的界面组件,如按钮、列表框、菜单等。
AWT组件中,包含对其对等组件的大量实用操作。例如使用AWT创建了一个Menu类的实例,那么Java运行时系统将创建一个菜单对等组件的实例,而由创建的对等组件实际执行菜单的显示与管理。在创建菜单实例时,Solaris JDK将产生一个Motif菜单对等组件,而Windows JDK将产生一个Window菜单对等组件等。这样,对等组件保护着每个平台的本地外观和感觉(Look and Feel),但是可以在移植时改变它们的大小和位置,因为它们在不同的平台可能会有不同的大小,也许还有不同的行为。而AWT类仅是对等组件外围的包装与操作工具,因此,对等组件可以快速产生一个GUI工具组件。
AWT最初只包括与本地对等组件相关联的组件,称为重量组件(Heavyweight Component),这些组件在它们自己的本地不透明窗口中绘制,在改变其默认行为时,不可以为其扩展子类,此外,它们必须是矩形的,且不能有透明背景。因此,在AWT1.1版本中引入了轻量组件(Lightweight Component)的概念。
轻量组件没有本地对等组件,它不在本地不透明窗口中绘制,而是在它们的重量容器窗口中绘制,它们直接扩展了java.awt.Component类或java.awt.Container类。轻量组件不会损失与它们关联的不透明窗口的性能,它们可以有透明的背景及非矩形的外观,但在轻量组件的容器中必须有一个是重量组件,否则无法在窗口内绘制轻量组件。
我们将在本章对AWT软件包中的常用组件进行详细讲解。
2. Swing
Swing是建立在AWT基础之上的,它用来代替AWT中的重量组件,而不是用来替代AWT本身。它利用了AWT的底层组件,包括图形、颜色、字体、工具包和布局管理器等。它使用AWT最好的部分来建立一个新的轻量组件集,而丢弃了AWT中有问题的重量组件部分。
Swing支持可插接观感(Pluggable Look-and-Feel),可插接的观感可使开发人员构建这样的应用程序:这些应用程序可在任何平台上执行,就好像是专门为那个特定平台而开发的一样。在Microsoft Windows环境中执行的程序,似乎是专为这个环境而开发的;而同样的程序在Unix平台上执行,其行为又似乎是专为Unix环境开发的。
通过引入新特性和丰富的功能,Swing提供了比AWT更全面的组件集合。Swing API是围绕实现AWT各个部分的API构建的,这保证了所有早期的AWT组件仍然可以使用。