awt 和 swing 的区别

java awt 和swing的区别是什么
2024-11-16 01:54:19
推荐回答(4个)
回答1:

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, 也就是通过牺牲速度来实现应用程序的功能。

AWT 是抽象窗口组件工具包,是 java 最早的用于编写图形节目应用程序的开发包。
Swing 是为了解决 AWT 存在的问题而新开发的包,它以 AWT 为基础的。

回答2:

AWT 是抽象窗口组件工具包,是 java 最早的用于编写图形节目应用程序的开发包。
Swing 是为了 扩充AWT而新开发的包,它以 AWT 为基础的。

AWT:
优点:
1) 最早的JAVA GUI包,内嵌到JDK中,无须另外引入包;
2) 稳定;
3) 基本上自动释放资源;
4) AWT都是线程安全的;
5) 既可从下往上创建界面,也可以从上往下创建界面;缺点:
1) 有些经常使用的组件,例如表、树、进度条等,都不支持。
2) 线程安全会导致速度有点慢;
3) component的创建完全依赖于运行的OS的实现,导致不同的OS下有不同的外观和事件;
4) 没有为残废人提供的易用性功能。
SWing
优点:
1)与AWT一样,内嵌到JDK中,无须另外引入包;
2)不依赖于OS的GUI实现,所以在不同的界面中展现的效果是几乎一样的;
3)
缺点:
1)不是线程安全的;
2)界面在不同的OS上差不多,但不是有些效果没有被模拟出来;

回答3:

你好,Swing是AWT的扩展,它提供了许多新的图形界面组件。Swing组件以“J”开头,除了拥有与AWT类似的按钮(JButton)、标签(JLabel)、复选框(JCheckBox)、菜单(JMenu)等基本组件外,还增加了一个丰富的高层组件集合,如表格(JTable)、树(JTree)。在javax.swing包中,定义了两种类型的组件:顶层容器(Jframe、Japplet、JDialog和JWindow)和轻量级组件。
说白话一点,组件就是构成你图形界面的零部件。如面板,按钮,下拉选等等。

回答4:

本地系统的相关性。。JDK写程序 所有功能都是靠虚拟机去操作本地操作系统 比如window下。。就是JDK用windows API实现你功能
而awt包中很多组件是组件自身去调用本地操作系统代码
swing包中的组件 采用的是调用本地虚拟机方法,由虚拟机再调用本地操作系统代码。。
意思就是中间多了一层,这样就加强了swing包的移植性,与本地关系不那强了