Java编程 awt和Swing的区别_第1页
Java编程 awt和Swing的区别_第2页
Java编程 awt和Swing的区别_第3页
Java编程 awt和Swing的区别_第4页
Java编程 awt和Swing的区别_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java编程awt和Swing的区别第一种说法:AWT是AbstractWindowToolKit(抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口。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为基础的。第二种说法:学swing之前先学awt,因为awt是Java实现图形界面的基础。它能够完成编写界面的基本功能,最重要的是,事件的监听是由awt完成的。而swing是在awt基础上提供的新的界面工具包,它比awt运行速度快,界面也更加漂亮。但是,事件的响应等工作还是要用awt来完成。第三种说法:比较AWT和SwingAWT和Swing组件体系Swing:通过在父组件上动态调用add()和remove()方法,来对组件树进行动态维护,因此,可以存在没有父组件的子组件。SWT:通过在构造函数的参数中,指定父组件,因此,不可能存在没有父组件的子组件。AWT和Swing组件绘制Swing:通过调用组件的paint()方法来进行组件的绘制,组件进一步对他的子组件调用paint(),从而完成整棵组件树的绘制。通过子类化,重写paint()方法,可以完全定制一个组件的绘制。SWT:SWT组件只是本地平台上实际组件的一个代理,实际组件采用Win32编程方式进行绘制,绘制的过程不在JVM中完成。因此,子类化也不能对绘制进行完全定制。当SWT组件进行绘制时,他在完成了本地的绘制以后,会返回JVM,然后对所有已注册的PaintListener发出通知,因此,通过注册PaintListener可以对组件绘制进行一定程度上的修改。AWT和Swing事件模型Swing中的事件会跟据当前的焦点进行发送。父组件不能对事件进行过滤。Swing中的事件监听器都是有类型的,因此每个组件所能支持的事件类型是通过方法名来限定的。不能扩展。SWT中的事件也是根据当前的焦点进行发送。父组件不能对事件进行过滤。SWT中支持有类型的监听器,也支持无类型的监听器,通过addListener(type,listener),我们可以为组件添加任何类型的监听器。AWT和Swing包设计Swing是一个纯粹的组件库,他没有图形的操作,他的绘制最终转发给Java2D来完成。SWT包含了组件库和图形库,他的结构与AWT比较接近。其它AWT和SWT实现原理不同:AWT控件相当于是一笔一画绣出来的,参加java.awt.Component.paint(Graphicsg),性能差;而SWT调用了操作系统后台原生库,org.eclipse.swt.widgets.Control类型中就没有类似的paint方法了,但是有一个接口org.eclipse.swt.graphics.Drawable实现原理的不同带来了性能和用户视觉的差异。SWING是基于AWT提供的MVC不完全实现,JFACE是基于SWT提供的MVC不完全实现。两者的核心作用都是提供了viewer和模型封装的概念,从设计实现层面看,SWING更加唯美一些,JFACE则更加侧重于实用。SWING和JFACE两者都偏重于行为控制上下文,而对UI数据(例如,一个文本框控件中的内容)的管理都没有做太多的设计。JFACE中略有改进,提供了setData的概念。JFACE是为了Eclipse而生的,虽然后来RCP出来了,又做了其他的包装宣传,典型的体现就是提供了JFaceTextFramework和其他一些用户构建Eclipse元素的UI支持,也提供了一些系统资源管理(ImageRegsitry、ResourceManager等)等附加功能。SWING框架与代码很优美,但效率低,特别是高级控件如各种选择框超慢,与Windows本身不协调,使用体验差;而且再怎么使用LookAndFeel,还是不美观,总是感觉画的不清晰。一般来说尽量用轻量级的组件Swing,这样对程序的移植性很好,一般javax.swing包里的组件大部分是轻量级的,java.awt里面的是重量级的。Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级(light-weight)组件,没有本地代码,不依赖操作系统的支持,这是它与AWT组件的最大区别。由于AWT组件通过与具体平台相关的对等类(Peer)实现,因此Swing比AWT组件具有更强的实用性。Swing在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其它特性。1.Swing与Awt的最大的区别:Swing为急于窗体的GUI应用开发设计,为java跨平台特性提供了卓越的支持.它完全没有本地代码,不受操作系统的影响,做到了真正的跨平台应用,甚至能够提供本地窗口系统不支持的其它特性.因此比AWT具有更强的实用性,同时比AWT程序拥有更加精致的外观感受.AWT只提供基本的组件,使很多设计变得复杂,且无法在不同的平台下保持显示风格的一致性.例如:如果建立一个按钮Button对象,就会有一个按钮(ButtonPeer)同其对象一起被建立,然后此按钮对象会请求底层操作系统创建一个真正的按钮.即在WindowsNT上执行,那么创建的就是WindowsNT按钮,Linux上执行,那么创建的就是Linux按钮.因此AWT组件外观会受到底层操作系统的影响.2.Swing的特点:⑴.Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级(light-weight)组件,没有本地代码,不依赖操作系统的支持,这是它与AWT组件的最大区别。由于AWT组件通过与具体平台相关的对等类(Peer)实现,因此Swing比AWT组件具有更强的实用性。Swing在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其它特性。.Swing采用了一种MVC的设计范式,即"模型-视图-控制"(Model-View-Controller),其中模型用来保存内容,视图用来显示内容,控制器用来控制用户输入。.Swing外观感觉采用可插入的外观感觉(PluggableLookandFeel,PL&F)3.Swing的类层次结构在javax.swing包中,定义了两种类型的组件:顶层容器JFrame,JApplet,JDialog和JWindow)和轻量级组件oSwing组件都是AWT的Container类的直接子类和间接子类。java.awt.Component-java.awt.Container-java.awt.Window-java.awt.Frame-javax.swing.JFrame-javax.Dialog-javax.swing.JDialog-javax.swing.JWindow-java.awt.Applet-javax.swing.JApplet-javax.swing.Box-javax.swing.JcomponetSwing包是JFC(JavaFoundationClasses)的一部分,由许多包组成包描述Com.sum.swing.plaf.motif用户界面代表类,它们实现Motif界面样式Com.sum.java.swing.plaf.windows用户界面代表类,它们实现Windows界面样式Javax.swingSwing组件和使用工具Javax.swing.borderSwing轻量组件的边框Javax.swing.colorchooserJcolorChooser的支持类/接口Javax.swing.event事件和侦听器类Javax.swing.filechooserJFileChooser的支持类/接口Javax.swing.pending未完全实现的Swing组件Javax.swing.plaf抽象类,定义Ul代表的行为Javax.swing.plaf.basic实现所有标准界面样式公共功能的基类Javax.swing.plaf.metal用户界面代表类,它们实现Metal界面样式Javax.swing.tableJtable组件Javax.swing.text支持文档的显示和编辑Javax.swing.text.html支持显示和编辑HTML文档Javax.swing.text.html.parserHtml文档的分析器Javax.swing.text.rtf支持显示和编辑RTF文件Javax.swing.treeJtree组件的支持类Javax.swing.undo支持取消操作4.MVC(Model-View-Control)体系结构Model:存储组件数据的地方.如JCheckBox中的Model将存储所有选项的值,并以boolean的值来表示,而JTable的Model则会存储所有表格上的数据.View:显示组件的外观.Controller:处理用户在组件上的操作,并将改变后的数据存储在Model中。为了简化组件的设计工作,在Swing组件中View和Controller两部分合为一体。每个组件有一个相关的分离模型和它使用的界面(包括视图和控件)。比如,按钮JButton有一个存储其状态的分离模型ButtonModel对象。组件的模型是自动设置的,例如一般都使用JButton而不是使用ButtonModel对象。另外,通过Model类的子类或通过实现适当的接口,可以为组件建立自己的模型。把数据模型与组件联系起来用setMo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论