在Eclipse中使用SWT进行界面设计 SWT是一个IBM开发的跨平台GUI开发工具包。至于为什么IBM要费劲自己另起炉灶开发一个GUI工具包,而不是使用Sun现有的由AWT,Swing, Java 2D, Java 3D等构成的Java GUI框架,那就说来话长了。(记得在一个BBS上读过一个关于SWT起源的调侃类的帖子)。
1. 为什么要使用SWT?
在SWT之前,Sun已经提供了一个跨平台GUI开发工具包AWT (Abstract Windowing Toolkit). 虽然AWT框架也使用的是原生窗口部件(native widgets),但是它一直未能突破LCD问题。LCD问题导致了一些主要平台特征的遗失。如果你不明白的话(其实我也没明白),换句话说,如果平台A有窗口部件(widgets)1-40,而平台B有窗口部(widgets)20-25,那么跨平台的AWT框架只能提供这两个窗口部件集的交集。
为解决这个问题,Sun又创建了一个新的框架。这个框架不再使用原生窗口部件,而是使用仿真窗口部件(emulated widgets)。这个方法虽然解决了LCD问题,并且提供了丰富的窗口部件集,但是它也带来了新的问题。例如,Swing应用程序的界面外观不再和原生应用程序的外观相似。虽然在JVM中这些Swing应用程序已经得到了最大程度的性能改善,但是它们还是存在着其原生对应物所不具有的性能问题。并且,Swing应用程序消耗太多的内存,这样Swing不适于一些小设备,如PDA和移动电话等。
IBM进行了尝试以彻底解决AWT和Swing框架带来的上述问题。最终,IBM创建了一个新的GUI库,这就是SWT。SWT框架通过JNI来访问原生窗口部件。如果在宿主(host)平台上无法找到一个窗口部件,SWT就会自动地模拟它。
2. SWT应用程序的组成 一个SWT应用程序的基本组成部分为显示界(Display)、命令界面(Shell,使命令进入并使运行初始化)和窗口部件(Widgets)。Display负责管理事件循环和控制UI线程和其他线程之间的通讯。Shell是应用程序中被操作系统窗口管理器管理的窗口。每个SWT应用程序至少需要一个Display和大于等于1个的Shell实例。 图1:从不同的角度看SWT应用程序 图1从不同的角度展示了SWT应用程序。左侧的图是一个简化的UI对象的继承图。中间的图展示了UI对象的容器结构(containment structure)。右侧的图则是创建后的UI外观。
如果一个应用程序使用了多个线程,那么每个线程都使用的是Display对象分配给它自己的实例。程序员可以使用静态方法Display.getCurent()来得到Display对象的当前活动的实例。 Shell用于在特定的操作系统中表现窗口。Shell可以最大化、最小化或正常化。Shell有两种类型。第1种是高层shell,它是Display的子窗口,同时它也是一个主窗口。第2类是对话shell,这种shell要依赖于其他的shell窗口存在。shell窗口最终成为上述那种类型,要看在创建shell时传递给shell构造函数的是什么风格位(style bits)。一个shell的默认值是DialogShell。也就是说,如果不带参数,那默认就是一个对话shell。而如果给参数赋予了一个Display对象,则该shell将是一个高层shell。
一些窗口部件的属性必须在创建它们的初期就要被设置。这些窗口部件的属性就是前面所说的风格位(style bits)。在SWT的类中,风格位被定义为常数。例如,Button button = new Button( shell, )。可以使用或(OR)操作符"|"来设置多个风格位。例如,如果想设置一个带边界的压下按钮,需要传递SWT.PUSH | SWT.BORDER作为风格位参数。
3. 进行SWT开发前的环境设置
为了进行SWT应用开发,你需要把SWT库添加到类路径(classpath)上,并设置必要的环境变量。
首先,你要在ECLIPSE_HOME\eclipse\plugins\org.eclipse.swt.win32_2.1.0\ws\win32目录下找到swt.jar库文件。注意这的"org.eclipse.swt.win32_2.1.0"目录是和Eclipse的版本有关的。实在找不到你就用文件搜索功能吧。然后依次打开下面窗口Project->Properies->JavaBuildPath->Libraries->Add Variable -> Eclipse Home ->Extend将swt.jar文件加到类路径中。
接着,你肯定想编译这个SWT应用了。但是会出现下面所示的运行异常。出现这个异常的原因是swt.jar库使用的是原生库。你需要设置java.library.path环境变量来使用Java中的原生库。
控制台(Console )的输出如下:
java.lang.UnsatisfiedLinkError: no swt-win32-2136 in java.library.path at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(Unknown Source) at org.eclipse.swt.internal.Library.loadLibrary(Library.java:108) at org.eclipse.swt.internal.win32.OS.(OS.java:46) at org.eclipse.swt.widgets.Display.internal_new_GC(Display.java:1291) at org.eclipse.swt.graphics.Device.init(Device.java:547) at org.eclipse.swt.widgets.Display.init(Display.java:1316) at org.eclipse.swt.graphics.Device.(Device.java:96) at org.eclipse.swt.widgets.Display.(Display.java:291) at org.eclipse.swt.widgets.Display.(Display.java:287) at com.swtdesigner.trytry.main(trytry.java:24) Exception in thread "main" 按下面的步骤设置java.library.path变量:依次打开Run-> Run...-> Java Applicaton-> "Project" ->Arguments -> VM Arguments。在"VM Arguments"中输入 -Djava.library.path=c:\eclipse\plugins\org.eclipse.swt.win32_2.1.0\os\win32\x86
注意要输入你自己的swt.jar所在的路径。
小技巧:加载原生库: 如果你需要加载自己应用程序所使用的原生库,可以使用Runtime.getPlatform.loadLibrary("libraryname")方法。
分享到:
相关推荐
在Eclipse中使用SWT设计界面,涉及到对SWT(Standard Widget Toolkit)的理解与掌握,以及如何在Eclipse环境中配置和使用SWT进行GUI开发。本文将深入解析SWT的起源、优势、基本组成,以及如何在Eclipse中进行环境...
### Eclipse 下使用 SWT 的知识点详解 #### 一、概述 Eclipse 是一款广泛使用的开源集成开发环境(IDE),尤其在 Java 开发领域占有重要地位。随着 Eclipse Visual Editor Project (VEP) 的出现,Eclipse 不仅能...
#### SWT界面设计实例 为了更好地理解SWT的用法,我们来看一个简单的示例,创建一个带有按钮和文本框的基本界面: 1. **创建Shell**:Shell是所有Widget的父容器。可以使用`new Shell()`创建一个新的Shell实例。 2...
在本篇文章中,我们继续深入探讨如何在Eclipse平台上利用SWT(Standard Widget Toolkit)进行图形用户界面的开发。在上一篇文章中,我们已经介绍了一些基本概念和技巧,包括如何创建一个简单的文件浏览器应用程序。...
【Eclipse进行可视化JAVA界面设计】 Eclipse是一个广泛使用的集成开发环境(IDE),尤其在Java开发领域备受青睐。随着Visual Editor Project(VEP)的推出,Eclipse为Java GUI开发提供了全新的可视化工具,使得...
【使用Eclipse进行SWT编程】 SWT,全称Standard Widget Toolkit,是由IBM开发的一套跨平台的图形用户界面(GUI)开发框架。这个框架的诞生源于Java早期GUI框架的局限性。当时,Sun Microsystems已经推出了AWT...
在Eclipse中,你可以使用JFace库来进一步增强SWT的功能,JFace提供了一些高级组件和数据绑定功能,简化了界面开发。不过,本例主要关注基础的SWT使用。 开始编写SWT程序,你需要导入必要的库: ```java import org...
WBPro_v7.2.0_for_Eclipse3.5就是一个专为Eclipse设计的SWT插件,旨在提升开发者的用户体验,特别是对于那些使用SWT进行GUI开发的开发者来说,它提供了可视化的界面编辑功能。 这个插件的版本号是7.2.0,说明它经过...
SWT Designer是一个可视化编辑器,可以帮助设计SWT和JFace的用户界面。根据你的需求选择合适的插件,点击“安装”(Install)按钮开始安装过程。 5. **确认依赖和许可**: 安装过程中,Eclipse会列出所有即将安装的...
这个"swt设计器for_Eclipse4.5"压缩包,正是为Eclipse Mars提供SWT界面设计功能的工具。 在使用这个插件时,首先需要解压缩文件,然后将其中的资源复制到Eclipse的对应目录。"artifacts.xml"文件可能包含了插件的元...
使用jigloo,开发者可以快速预览UI设计,进行实时调整,并自动生成对应的Java源代码。 在Eclipse中安装jigloo插件,通常需要以下步骤: 1. 访问jigloo官方网站,下载适用于Eclipse版本的插件文件。 2. 在Eclipse中...
"WB_v1.8.0_Up"可能指的是Workbench Builder的版本号,这是一个用于构建Eclipse工作台界面的工具,可能包含对SWT界面设计的增强或更新。 在提供的压缩包文件中,我们可以看到以下几个关键文件和目录: 1. **index....
SWT,全称为Standard Widget Toolkit,是IBM为了克服Java GUI开发中的局限性而设计的一套跨平台图形用户界面(GUI)开发框架。它的出现源于早期Java的GUI框架AWT(Abstract Windowing Toolkit)存在的问题,即本地...
8. **性能优化**:SWT因其使用原生系统控件而具有较好的性能表现,Eclipse 3.2版本中会继续优化这些特性,确保用户界面的流畅性。 9. **可访问性**:Eclipse 3.2的SWT设计也考虑了无障碍访问,支持屏幕阅读器和其他...
标题中的"org.eclipse.swt.win32的64位jar包"是指专为64位Windows操作系统设计的Eclipse SWT库。SWT库分为多个部分,"win32"标识了这个库是针对Windows平台的,而"win32.x86_64"则明确了它是64位版本,适合在64位的...
标题“SWT.rar_SWT_eclipse swt”表明这是一个与Eclipse中使用SWT进行编程相关的压缩包,可能包含了一些基本的代码示例和教程资料。Eclipse SWT使得Java开发者可以利用操作系统本地的GUI组件,提供比Java Swing更好...
6. **使用Designer工具**:Eclipse还提供了Design视图,允许开发者通过拖放的方式创建和编辑SWT界面,这大大简化了GUI的设计工作。可以使用Eclipse的WindowBuilder插件,它提供了对SWT和JFace的图形化设计支持。 7....
【描述】中的"org.eclipse.swt"是指Eclipse Standard/Widgets工具包,这是一个开源的Java库,允许开发人员在多种平台上创建原生用户界面。它特别强调了JAVA调用IE内核来实现一个内置的浏览器功能,这使得开发者能够...