1. AWT解决的问题:

    1) 最早是Sun公司开发的,用于解决Java的图形用户界面编程问题;

    2) 全称是Abstruct Window Toolkit,即抽象窗口工具集;

    3) 其底层实际上是调用了操作系统本身的图形绘制API,因此AWT的图形风格和所在的操作系统环境保持一致,在Win下就是Win的窗口风格,在Mac下就是Mac的窗口风格;

    4) 因此AWT并未真正实现图形界面,而仅仅是定义界面组件的位置和行为(事件响应等);


2. AWT存在的问题:

    1) 为了最大程度上实现跨平台,即不同操作系统上的代码能绘制出相同内容的图形,AWT只能迎合所有主流操作系统的界面设计,AWT组件只能使用所有这些系统的图形界面的交集(比如最基本的按钮、滚动条、编辑框等组件),因此组件很少,并且不能使用特定操作系统上的复杂的图形界面组件;

    2) AWT笨拙并且非面向对象;

    3) 以上这些必然导致AWT编写出来的界面卖相丑陋,并且功能非常有限;


3. Swing的发展:

    1) 基于上述AWT的缺点,Netscape公司开发了另一套Java图形界面工具IFC(Internet Foudation Class),可以看出是一种应用于互联网的Java图形界面实现;

    2) IFC真正意义上统一了图形界面,只有窗口本身依赖操作系统绘制(调用操作系统API),而窗口上的所有组件都是由这套GUI库自己绘制,即按钮、编辑框、滚动条等在所有操作系统中都具有同一种风格,而不是和操作系统的风格一致,这使得IFC在互联网中的应用非常广泛,因为真正的跨平台和界面统一;

    3) 后来Sun和Netscape合作完善了IFC形成最终的Swing,它比IFC更完善和强大;

    4) 如今,AWT、Swing、辅助API、2D界面API和拖放API共同组成Java基础类库(即JFC,Java Foundation Class),它是Java国际标准的一部分,是JDK的组件之一;

!!注意:Swing并没有完全取代AWT,而是基于AWT,虽然很多图形组件已经完全取代了AWT,但是其事件处理机制等还是沿用AWT的;