A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夏天 初级黑马   /  2012-9-18 13:29  /  1525 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Awt与 Swing
java.awt:Abstract Window ToolKit (抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件。
javax.swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。

虽然描述得很详细。//需要调用本地系统方法实现功能,这句话是什么意思?
swing貌似比awt包更强,实际开发中用哪个?  swing的劣势在哪?

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

5 个回复

正序浏览
想简单高效的话,就选择AWT,在标准版的Java中选Swing,视具体情况而定。
回复 使用道具 举报
AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口。AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的关系,我们把它称为peers。 也就是说,当我们利用 AWT 来构件图形用户界面的时候,我们实际上是在利用操作系统所提供的图形库。由于不同操作系统的图形库所提供的功能是不一样的,在一个平台上存在的功能在另外一个平台上则可能不存在。为了实现Java语言所宣称的"一次编译,到处运行"的概念,AWT 不得不通过牺牲功能来实现其平台无关性,也就是说,AWT 所提供的图形功能是各种通用型操作系统所提供的图形功能的交集。由于AWT 是依靠本地方法来实现其功能的,我们通常把AWT控件称为重量级控件。

Swing 是在AWT的基础上构建的一套新的图形界面系统,它提供了AWT 所能够提供的所有功能,并且用纯粹的Java代码对AWT 的功能进行了大幅度的扩充。例如说并不是所有的操作系统都提供了对树形控件的支持, Swing 利用了AWT 中所提供的基本作图方法对树形控件进行模拟。由于 Swing 控件是用100%的Java代码来实现的,因此在一个平台上设计的树形控件可以在其他平台上使用。由于在Swing 中没有使用本地方法来实现图形功能,我们通常把Swing控件称为轻量级控件。

     AWT和Swing之间的基本区别:AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT 的Java程序,其运行速度比较慢。对于一个嵌入式应用来说,目标平台的硬件资源往往非常有限,而应用程序的运行速度又是项目中至关重要的因素。在这种矛盾的情况下,简单而高效的AWT 当然成了嵌入式Java的第一选择。而在普通的基于PC或者是工作站的标准Java应用中,硬件资源对应用程序所造成的限制往往不是项目中的关键因素,所以在标准版的Java中则提倡使用Swing, 也就是通过牺牲速度来实现应用程序的功能。

Swing的优劣势:
1、丰富的组件类型。2、丰富的组件特性。3、好的组件API模型支持。4、出色的Look And Feel支持。
5、标准的GUI库。6、成熟稳定。7、可扩展和灵活性。8、总体上良好的性能。
9、有许多的组件模型以提高输送的性能。
Swing的不足之处:
1、 比AWT更多的内存消耗。2、更多的启动时间。

  希望对你有帮助。


回复 使用道具 举报
导其中一个就行了
回复 使用道具 举报
汪小照 发表于 2012-9-18 14:24
JDK写程序 所有功能都是靠虚拟机去操作本地操作系统 比如window下,就是JDK用windows API实现你功能

而awt ...

那正常的导包 是两个包都要导吗?
回复 使用道具 举报
JDK写程序 所有功能都是靠虚拟机去操作本地操作系统 比如window下,就是JDK用windows API实现你功能

而awt包中很多组件是组件自身去调用本地操作系统代码
swing包中的组件 采用的是调用本地虚拟机方法,由虚拟机再调用本地操作系统代码
意思就是中间多了一层,这样就加强了swing包的移植性,与本地关系不那强了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马