SWT,Swing,AWT及最小公分母问题(LCD)

来源:互联网 发布:什么是网络大学 编辑:程序博客网 时间:2024/04/29 14:25

首先我们来说下什么是最小公分母的问题,及LCD(least common denominator),这是我们听的最多的,也是讨论的最多的,可是细想是什么的时候却答不上来了。相反还有一个最大公分母(greatest common denominator),看下图:

 

图里有三个不同的集合,分别代表不同的操作系统,LCD其实指的就是它们三个的交集了,很明显最大公分母就是指它们三的并集喽!

 

明白LCD, 最大公分母, 我们再分别看看AWT,SWT,SWING。

 

AWT:

AWT的组件(component)遵循LCD的原则,所以AWT只有所有系统里常用的组件。所以你在AWT里找不到高级的组件如树(tree),因为它在别的系统里没有。对于一些特性AWT也是一样遵循LCD原则。它只支持那些在所有系统里都有的特性。比如:AWT的button里无法加入图像,是因为Motif系统里不支持这个特性。正因为AWT的组件及特性对各系统的很差支持,AWT吸引了很少的用户而被SUN停掉了,它的存在只是为了向后的兼容,并为Swing提供支持。

 

最小公分母问题(LCD):

读完以上片断大家知道什么是LCD问题了吧!*:)*

 

SWT:

SWT按最大公分母原则建立,及对所有系统里的组件及特性都支持,它的设计想法是如果这个组件在这个系统里存在的话,那么就用java代码对它进行封装并通过JNI调用。如果这个组件不存在那么就模拟生成及通过在SWT的composite上进行画操作。

 

 

Swing:

不用说,也是按最大公分母,可是在效率上表现不怎么样,可能以后会有改变。因为它也是基于AWT容器的,所以无法实现透明窗体等效果。

 

参考文章:

http://blogs.sun.com/Swing/entry/awt_swt_swing_java_gui