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

本文探讨了最小公分母(LCD)的概念在GUI开发中的应用,特别是在AWT、SWT和Swing中的差异。AWT遵循LCD原则,仅提供通用组件;SWT通过JNI实现最大公分母,支持所有系统组件;Swing则在AWT基础上提供更丰富的特性,但效率较低。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我们来说下什么是最小公分母的问题,及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

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值