Java语言最早开发图形界面的应用程序被称为“AWT”,AWT是“Abstract Window Toolkit”的简称,“Abstract Window Toolkit”意为“抽象窗体工具包”。AWT组件并不是纯Java实现的,因此对运行结果依赖本地GUI。而Swing 是由100%纯Java实现的,不再依赖于本地平台的GUI,因此可以在所有平台上都保持相同的界面外观。独立于本地平台的Swing 组件被称为轻量级组件,而依赖于本地平台的AWT组件被称为重量级组件。
由于Swing的所有组件完全采用Java实现,不再调用本地平台的GUI,所以导致Swing图形界面的显示速度要比AWT图形界面的显示速度慢一些,但相对于快速发展的硬件设施而言,这种微小的速度差别无妨大碍。
使用Swing开发图形界面有如下几个优势:
- Swing 组件不再依赖于本地平台的GUI,无须采用各种平台的GUI交集,因此Swing提供了大量图形界面组件,远远超出了AWT所提供的图形界面组件集。
- Swing组件不再依赖于本地平台GUI,因此不会产生与平台相关的bug。
- Swing组件在各种平台,上运行时可以保证具有相同的图形界面外观。
Swing在不同的平台上表现一致,并且有能力提供本地平台不支持的显示外观。由于Swing组件采用MVC模式来维护各组件,所以当组件的外观被改变时,对组件的状态信息没有任何影响。