Java awt是Java中早期用于编写图形图形应用程序的开发包,Swing是在awt的基础上构建的一套新的图形图像界面系统。简单来说,Swing是awt的扩展以及改良。那么我们来说一下关于Java中awt和swing的关系以及区别。
AWT
awt是Abstract Window ToolKit (抽象窗口工具包)的缩写,是早期编写应用程序图形界面的包。在这个工具包中还提供了一套与本地图形界面进行交互的接口。要说的是当你利用awt来构件图形用户界面的时候,实际上是在利用操作系统所提供的图形库。因为awt中的图形函数和操作系统中所提供的图形函数有着一一对应的关系,这个我们称之为peersJava中有一个概念"一次编译,到处运行"。
但是由于不同的操作系统的图形库所提供的功能可能不一样,这个平台存在的功能另一个平台不一定存在。所以Java为了实现这个"一次编译,到处运行"的概念,awt不得已通过牺牲功能实现平台无关性。也就是说,awt所提供的图形功能是各种通用型的操作系统的图形功能的交集。所以awt被称为"重量级控件",因为awt是依靠本地方法来实现功能的。
Swing
Swing(用户界面开发包)是在AWT的基础上构建的一套新的图形界面系统,它提供了AWT 所能够提供的所有功能,并且用纯粹的Java代码对AWT的功能进行了大幅度的扩充。例如:并不是所有的操作系统都提供了对树形控件的支持, Swing则利用了AWT中所提供的基本作图方法模拟了一个树形控件。由于 Swing是用纯粹的Java代码来实现的,因此Swing控件在各平台通用。 因为Swing不使用本地方法,故Swing控件称为“轻量级控件”。
awt的每一个组件都有peers,但是Swing并没有peers和它对应,这就是为什