比较awt/swing swt/jface
1.组件体系
a) Swing:通过在父组件上动态调用add()和remove()方法,来对组件树进行动态维护,因此,可以存在没有父组件的子组件。
b) SWT:通过在构造函数的参数中,指定父组件,因此,不可能存在没有父组件的子组件。
2.组件绘制
a) Swing:通过调用组件的paint()方法来进行组件的绘制,组件进一步对他的子组件调用paint(),从而完成整棵组件树的绘制。通过子类化,重写paint()方法,可以完全定制一个组件的绘制。
b) SWT:SWT组件只是本地平台上实际组件的一个代理,实际组件采用win32编程方式进行绘制,绘制的过程不在JVM中完成。因此,子类化也不能对绘制进行完全定制。当SWT组件进行绘制时,他在完成了本地的绘制以后,会返回JVM,然后对所有已注册的PaintListener发出通知,因此,通过注册PaintListener可以对组件绘制进行一定程度上的修改。
3.事件模型
a) Swing:Swing中的事件会跟据当前的焦点进行发送。父组件不能对事件进行过滤。Swing中的事件监听器都是有类型的,因此每个组件所能支持的事件类型是通过方法名来限定的。不能扩展。
b) SWT:SWT中的事件也是根据当前的焦点进行发送。父组件不能对事件进行过滤。SWT中支持有类型的监听器,也支持无类型的监听器,通过addListener(type,listener),我们可以为组件添加任何类型的监听器。
4.包设计
a) Swing:Swing是一个纯粹的组件库,他没有图形的操作,他的绘制最终转发给Java 2D来完成。
b) SWT:SWT包含了组件库和图形库,他的结构与AWT比较接近。
5. 其它
AWT和SWT实现原理不同:AWT控件相当于是一笔一画绣出来的,参加 java.awt.Component.paint(Graphics g),性能差;而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出来了,又做了其他的包装宣传,典型的体现就是提供了JFace Text Framework和其他一些用户构建Eclipse元素的UI支持,也提供了一些系统资源管理(ImageRegsitry、 ResourceManager等)等附加功能。
SWING框架与代码很优美,但效率低,特别是高级控件如各种选择框超慢,与Windows本身不协调,使用体验差;而且再怎么使用LookAndFeel,还是不美观,总是感觉画的不清晰。
分享到:
相关推荐
基于 Java 桌面程序开发的图形库主要有 3 种,它们分别是 AWT、Swing 和 SWT。用前 两种库编写的桌面程序不够美观而且执行效率低,响应速度慢,SWT 恰好克服了 AWT 和 Swing 的缺点,它丰富的组件可以使程序员开发出...
2. **性能**:由于SWT直接与操作系统交互,避免了Java AWT和Swing中的额外层,从而提高了GUI的性能。 3. **丰富的组件集**:SWT提供了各种常见的GUI组件,如按钮、文本框、列表、树、表、进度条等,以及对话框、...
Java GUI 程序设计 AWT/Swing SWT/JFace
SWT 是一个开源的GUI库,它的设计目标是提供比Java标准库中的AWT和Swing更快、更原生的用户体验。SWT直接与操作系统的图形API交互,如Windows的Win32 API或Linux的X11,因此它可以实现接近原生应用的性能和外观。SWT...
首先,SWT是Eclipse提供的一个开源的GUI库,它与Java标准的AWT和Swing不同,SWT直接与操作系统API交互,因此在性能和外观上更接近原生应用程序。SWT提供了诸如按钮、文本框、列表、树等基本控件,以及对话框、菜单和...
SWT设计的目的是为了克服Java AWT和Swing的性能问题,通过直接调用操作系统提供的原生控件来实现高效的用户界面。SWT提供了丰富的组件,如按钮、文本框、列表、树视图等,并支持事件处理和布局管理。 JFace是在SWT...
7. **SWT/AWT/Swing的比较**:理解SWT相对于标准Java GUI库的优势和局限性,以及在不同场景下的选择。 通过这个"Ecilpse的SWT/JFace开发实战精解",初学者将能够快速上手Eclipse的GUI编程,而经验丰富的开发者也能...
SWT的目的是为了提供比Java AWT和Swing更高效、更原生的外观和性能。SWT 3.5版可能包含了对当时主流操作系统的支持,例如Windows、Linux和Mac OS X。 2. JFace:JFace是在SWT基础上建立的更高层次的抽象层,它简化...
它的优点在于性能优异,因为它避免了Java AWT和Swing中的抽象层,直接调用操作系统API。SWT提供了一系列的基础控件,如按钮、文本框、表格等,以及窗口管理、事件处理等功能。 2. **JFace**:JFace是在SWT基础上...
SWT的优势在于其高性能和与操作系统原生界面的接近,这使得用SWT构建的应用程序在视觉效果和响应速度上往往优于使用AWT和Swing的程序。JFace则是建立在SWT之上的一层抽象,它提供了一些通用的UI组件和接口,简化了...
它的核心优势在于提供了跨平台的原生界面支持,避免了Java AWT和Swing中常见的“Java Look and Feel”。 2. JFace JFace是在SWT基础上构建的一个高级用户界面框架。它简化了SWT的使用,通过提供数据绑定、视图和...
Java提供了多种库来支持图形界面开发,包括AWT(Abstract Window Toolkit)、Swing和SWT(Standard Widget Toolkit)。这些库各自有不同的特点和应用场景。 - **AWT**:这是Java最早提供的图形界面工具包,主要通过...
这使得基于 SWT 的应用程序在性能上通常优于使用 AWT 或 Swing 的应用程序。 JFace 则是对 SWT 进一步封装的结果,它引入了一些高级概念,如数据绑定、视图模型和控制器模式,帮助开发者创建更加模块化和可维护的...
9. SWT与AWT/Swing的对比:分析SWT相对于标准Java GUI库的优势和劣势,帮助开发者选择合适的工具。 10. 示例与实践:通过实际项目示例,演示如何综合运用SWT和JFace开发功能完备的应用程序。 这个系列教程可能是...
SWT的设计目标是提供比Java AWT和Swing更高的性能,同时保持跨平台兼容性。在SWT 3.5版本中,开发者可以找到各种控件的API,包括基础控件的创建、事件处理、布局管理以及对话框的使用。 2. JFace:JFace建立在SWT之...
SWT 的设计目标是提供比Java AWT和Swing更快的性能,因为它使用了本地系统资源,而不是Java的抽象层。"swt-win32.dll" 是SWT针对Windows平台的本地库,负责实现与Windows系统的交互。 JFace 建立在SWT之上,为...
基于 Java 桌面程序开发的图形库主要有 3 种,它们分别是 AWT、Swing 和 SWT。用前 两种库编写的桌面程序不够美观而且执行效率低,响应速度慢,SWT 恰好克服了 AWT 和 Swing 的缺点,它丰富的组件可以使程序员开发出...
SWT 的设计目标是克服 Java AWT 和 Swing 的一些局限性,例如性能问题和缺乏原生外观。 JFace 是建立在 SWT 之上的更高层次的框架,它简化了 GUI 开发,提供了一些抽象类和接口,帮助开发者创建更复杂的用户界面。...
SWT的优势在于它能充分利用操作系统的图形资源,避免了Java AWT或Swing中常见的“Java Look and Feel”。 ### JFace简介 JFace作为SWT的上层框架,主要目的是减少GUI开发的复杂性。它通过提供模型-视图-控制器(MVC...
SWT的目标是提供比Java AWT和Swing更快、更高效、更本地化的图形用户界面。它通过JNI(Java Native Interface)直接调用操作系统API,实现更好的性能和功能。 1. **SWT基础知识**: - **控件**:SWT包含各种控件,...