Swing与AWT的关系:
AWT中大部分组件都含有native代码,而操作系统并非java编写,故要与操作系统相互沟通就必须使用与操作系统兼容的程序语言,产生所谓的对等(peer)实体,一个AWT组件就等于一个对等对象,这样的做法所需付出的代价除了没有弹性外,也可能消耗大量的系统资源。
Swing彻底解决了上诉问题。Swing组件是由纯Java程序所编写的(除了JFrame,JDialog,JWindow,JApplet之外),这样的做法可以动态改变组件外观及LookAndFeel。而且产生的Swing组件不会产生对等组建,可减少系统资源,增加系统稳定性,所有与操作系统间的交互将通过最上层组件(JFrame,JDialog,JWindow,JApplet)来完成。
但是Swing并不是完全取代了AWT,使用Swing组件是常常还是需要旧有的AWT功能的,例如事件处理(Event Handle)或版面配置(Layout Manager),因此可以把Swing和AWT看成是相辅相成的两大工具组。
Swing结构:
Swing原先是利用MVC(Model-View-Controller)的概念衍生而出,运用MVC结构可以使程序具有对象化的特性,也更容易维护。但MVC结构在Swing的设计上有一点点改变,原来独立出来的View与Controller在Swing中是合并在一起的,并称为UI界面(UI-delegate),原因是Swing的发展小组认为两者具有紧密的相关性,分开的话没有太多好处,还会增加设计上的难度,故原先的MVC结构就被更改为M-UI结构。
Swing中Model的概念最为重要和复杂,可分为3个种类:
1.存储组件内将被用来操作的数据。此种模式最常被用来显示不同的数据显示方式,如TableModel、ListMode、ComboBoxModel、Document等。适时地操作这些模式将有助于程序的简化。
2.存储控制组建操作模式的数据。
3.存储组件本身性质的数据模式。
当用户与界面有任何交互时,所有改变的值会更改至Model中原有的数据,此时Controller会负责用更改画面与变更Model数据的操作。
JFC-Java Foundation Classes-包含5个部分:
1.AWT组件:旧有的窗口组件包。
2.Swing组件:新的窗口组件包。
3.Accessibility API:提供一种更先进的沟通界面。例如语音输入或触摸屏。
4.Java 2D API:提供强大的图形处理函数。
5.支持Drag and Drop:类似于Windows中开两个窗口作文件的Drag and Drop(Copy and Paste)功能,即在两个相同的java界面,甚至是Java与其他应用程序界面作数据交换的操作。
lightweigth compoment:
Swing是由纯Java代码所写,因此Swing解决了Java因窗口类而无法跨平台的问题,使窗口功能也具有跨平台与延展性的特性。而且Swing不需占用太多系统资源,因此我们说Swing是lightweight,表示我们可利用它轻易地做出各种变化。