当Java程序创建并显示AWT组件时,真正创建和显示的是本地组件(称之为Peer,即对等组件)。对等组件是完成AWT对象所委托的任务的本地用户界面组件,由它负责完成所有的具体工作,包括绘制自己、对事件作出响应等,所以AWT组件只要在适当的时间与其对等组件进行交互即可。通常把AWT提供的这种与本地对等组件相关联的组件称为重量级组件,它们的外观和显示直接依赖于本地系统,因此,在移植这类程序时,常会出现界面不一致的情况。为此,Sun公司在AWT的基础上又开发了一个经过仔细设计、灵活而强大的新的GUI组件集——Swing。
Swing是在AWT组件基础上构建的,因此某种程度上可以认为Swing组件实际也是AWT的一部分。Swing同时又提供了大量新的、比AWT更好的图形界面组件(这些组件通常以J字母开头),如Jbutton、JtextField、JFrame等。它们是用纯Java编写的模拟组件,所以同Java本身一样可以跨平台运行,这一点不同于AWT,这种不依赖于特定平台的模拟组件称为轻量级组件。Swing轻量级组件带来的好处是可以在所有的平台上获得统一的效果,其缺点是执行速度相比本地GUI程序来说要慢一些,因为Swing无法充分利用本地硬件的GUI加速器以及本地主机GUI操作等优点。不过Sun公司已经花费了大量的人力来改进新版本的Swing的性能,相信这个缺点会被逐渐克服的。
与AWT不同的是,Swing组件不是线程安全的,这就意味着用户需要关心在应用程序中到底哪个线程在负责更新GUI。如果在运行线程过程中出现了错误,就可能发生不可预料的结果,如用户图形界面故障等。(www.daowen.com)
Swing组件集提供了比AWT更多、功能更强的组件,增加了新的布局管理方式(如BoxLayout),同时还设计出了更多的处理事件。如果读者已经掌握了AWT的编程技能,那么再来学习Swing就应该不会有什么困难了!
【例7.17】Swing编程实例。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。