您的位置:首页 > 编程语言 > Java开发

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

2008-12-24 20:39 295 查看
首先我们来说下什么是最小公分母的问题,及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

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  swing swt jni java button tree