`
imshare
  • 浏览: 323699 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

使用Eclipse进行SWT编程(1)

阅读更多
1. 为什么要使用SWT?
SWT是IBM开发一套跨平台的GUI开发框架。为什么IBM要创建另一种GUI呢?为什么他们不使用现有的Java GUI框架呢?要回答这些问题,我需要回到Java的早期时代。
Sun已经创建了一套跨平台的GUI框架 AWT (Abstract Windowing Toolkit)。 这个AWT框架使用了本地窗口组件(native widgets)不过它存在LCD问题. 这个LCD问题导致了它失去主要的平台特性。换句话说,如果平台A有窗口组件1-40而平台B有窗口组件20-25,那么这个跨平台的AWT框架只能提供这两个集合的交集。
为了解决这个问题,Sun创建了一个新的框架使用模拟窗口组件(emulated widgets)来代替本地窗口组件(native widgets)。这个方法解决了LCD问题同时提供了丰富的窗口组件,不过也产生了其他的问题。例如,Swing应用程序不再和本地程序在样子上一致。虽然JVM有了很大的改善, 但是Swing应用程序仍然存在它们本地配对物所没有的性能问题。而且,Swing应用程序消耗了太多的内存,故不适合用于PDA和移动电话等小型设备。
IBM发现这些方法都无法满足他们的需求。因此,IBM创建了新的GUI库叫做SWT,它解决了AWT和Swing框架中的问题。SWT框架使用JNI访问本地窗口组件(native widgets),如果一个窗口组件在主机平台上不能获得,那么SWT会模拟这个不能获取的窗口组件。

2. 一个SWT应用程序的基础材料
Display, Shell和Widgets是一个SWT应用程序的基础材料。Displays用于管理事件循环(event loops)和控制UI线程和其他线程之间的通讯。Shell是应用程序中由操作系统窗体管理器来管理的窗体。任何SWT应用程序都需要至少一个Display实例和1个或更多的Shell实例。

图 1.不同视角看的SWT程序


图1 说明了一个SWT应用程序的不同看法。第一幅图是简化的UI对象的继承图。第二幅图是UI对象的包含结构。第三幅图就是创建了的UI。
如果一个应用程序使用多个线程,每个线程使用自己的Display对象实例。那么你可以通过使用静态的Display.getCurent()方法得到当前活跃的Display对象实例。
一个Shell表示一个特别操作系统中的一个窗口。一个Shell可以最大化,正常化,和最小化。有两种类型的shell。一种是顶层(top-level)Shell作为Display的主窗口创建的,另一种是依赖于其他shell的对话shell。
Shell的类型是由传给Shell构造函数的style位决定的。Shell的默认值是对话Shell。也就是说,如果没有传递任何值给构造函数参数,那么创建的是默认的对话Shell。如果一个Display对象作为参数,那么它是顶层(top-level)Shell。
有些窗口组件(widget)的属性必须在创建时设定。这些窗口组件(widget)属性叫做style bits。Style bits是在SWT类中定义的常量。如Button button = new Button( shell, <styleBits> )。当然可以通过或操作|来使用多个style bit。例如,要使用一个有边的按钮,你需要使用SWT.PUSH | SWT.BORDER作为style bit参数。

3. 环境设置
开发一个SWT应用程序与开发一个Swing应用程序不同。为了可以开始一个SWT应用程序的开发,你需要把SWT库加到classpath中,同时设置好对应的必要的环境变量。
第一个需要的库是swt.jar文件,它位于ECLIPSE_HOME\eclipse\plugins\org.eclipse.swt.win32_2.1.0\ws\win32目录。根据你使用的Eclipse版本,你可能需要使用不同的目录。这个swt.jar文件必须加到你的classpath中,为此到Project->Properies->JavaBuildPath->Libraries->Add Variable -> Eclipse Home ->Extend并按上述路径选择swt.jar库,然后单击OK。
然后,你可以编译SWT应用程序,但是由于抛出下边所示的运行时异常,无法运行它,因为swt.jar使用了本地库。你需要设置java.library.path环境变量来在Java中使用本地库。
Console output
java.lang.UnsatisfiedLinkError: no swt-win32-2133 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1403)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:832)
...
at org.eclipse.swt.widgets.Display.<init>(Display.java:287)
at Main.main(Main.java:25)
Exception in thread "main"

要设置java.library.path变量,到Run-> Run...-> Java Applicaton-> New ->Arguments -> VM Arguments。然后,如何需要,如下修改path,把它粘贴到VM Arguments部分。-Djava.library.path=c:\eclipse\plugins\org.eclipse.swt.win32_2.1.0\os\win32\x86


装载本地库
如果你需要装载应用程序使用的任何本地库,你可以使用Runtime.getPlatform.loadLibrary("libraryname")方法。
完成这些步骤,你就可以在你的eclipse环境下运行SWT程序了。
4. 你的第一个SWT应用程序
创建一个典型的SWT应用程序需要一下步骤:
• 创建一个Display
• 创建一个或多个Shells
• 设置Shell的Layout manager
• 创建Shell中的widgets
• 开启Shell窗口
• 写一个事件转发循环
• 销毁display
你可以使用下边的代码模板来快速的运行本文中的代码片断。你可以复制粘贴这些代码至合适的区域。如源代码1所示:
源代码 1. SWT应用程序模板
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class SliderExample
{
  public static void main(String args[])
  {
  Display display = new Display();
  Shell shell = new Shell(display);
  shell.setLayout( new RowLayout());
    // ------------------------
    // Your code comes to here.
    // ------------------------
  
  //自动调整窗体的大小
  shell.pack();
  //打开窗口
  shell.open();
  //如果窗体没有关闭则一直循环
  while( !shell.isDisposed())
    {
      //如果display不忙
      if(!display.readAndDispatch()) 
      //休眠
      display.sleep();
    }
  //销毁display
  display.dispose();
  }
}


这个例子显示了一个空的窗口。你可以加widget到上边的模板。任何SWT应用程序需要 一个Display和一个或多个 Shells。这个Shell是个合成对象;它可以容纳其他的合成对象。如果没有设置shell的 layout,加到Shell的widget是不能看见的。Shell窗口必须 打开才能显示。 事件处理循环读取并转发GUI事件。如果没有事件处理循环应用程序窗口是无法显示的。即使通过open()方法来打开Shell窗口。让后,需要在Shell被丢弃的时候销毁 Display。

导入需要的库
你可以使用Source->Organize Imports菜单或者Ctrl+Shift+O来自动导入需要的库。

  • 大小: 9 KB
分享到:
评论

相关推荐

    使用Eclipse进行SWT编程

    【使用Eclipse进行SWT编程】 SWT,全称Standard Widget Toolkit,是由IBM开发的一套跨平台的图形用户界面(GUI)开发框架。这个框架的诞生源于Java早期GUI框架的局限性。当时,Sun Microsystems已经推出了AWT...

    教你使用Eclipse进行SWT编程(普通下载).doc

    在SWT编程中,基础元素包括Display、Shell和Widgets。Display是管理事件循环和UI线程间通信的核心对象。Shell代表了操作系统级别的窗口,可进行最大化、正常化和最小化操作。Shell分为顶层Shell和对话Shell,前者...

    使用Eclipse进行SWT编程.pdf

    "使用Eclipse进行SWT编程" SWT(Standard Widget Toolkit)是一个跨平台的GUI开发框架,由IBM开发。SWT解决了AWT和Swing框架中的问题,使用JNI访问本地窗口组件(native widgets),并且可以模拟不能获取的窗口组件...

    Eclipse之SWT编程

    ### Eclipse之SWT编程:深度解析与应用 #### 一、SWT的诞生与优势 SWT(Standard Widget Toolkit)是IBM为解决Java GUI开发中的一些固有问题而设计的一套跨平台图形用户界面开发框架。在Java GUI的历史进程中,Sun...

    一款Eclipse的SWT插件

    WBPro_v7.2.0_for_Eclipse3.5就是一个专为Eclipse设计的SWT插件,旨在提升开发者的用户体验,特别是对于那些使用SWT进行GUI开发的开发者来说,它提供了可视化的界面编辑功能。 这个插件的版本号是7.2.0,说明它经过...

    org.eclipse.swt包

    `org.eclipse.swt` 包是Java编程环境中用于创建图形用户界面(GUI)的一个重要库,它是Eclipse项目的一部分。SWT(Standard Widget Toolkit)是一个开源的GUI库,它提供了丰富的控件和功能,使得开发者可以构建高效...

    eclipse开发SWT应用

    1. **创建 SWT 项目**:在Eclipse中,选择“File” -&gt; “New” -&gt; “Project”,然后在“Java”类别下找到“SWT Project”。输入项目名称,选择合适的JRE版本,点击“Finish”完成项目创建。 2. **编写 SWT 主类**...

    eclipse3.3 swt_designer插件

    SWT是Java编程中用于构建本地外观和感觉的GUI库,它是Eclipse IDE本身的基础。 本插件的安装过程简单明了:你只需将下载的压缩包解压,然后将解压得到的SWT_Designer_for_Eclipse文件夹放入Eclipse的插件目录下。...

    SWT.rar_SWT_eclipse swt

    标签“swt eclipse_swt”进一步确认了内容与Eclipse中的SWT编程有关,可能涉及到如何在Eclipse IDE中配置和使用SWT,以及SWT与Eclipse插件开发的关系。 在压缩包的文件列表中,我们看到两个文件: 1. "SWT 图形用户...

    Eclipse中SWT插件的安装Eclipse中SWT插件的安装

    Eclipse是一款广泛使用的开源集成开发环境(IDE),它支持多种编程语言,如Java、C++、Python等。SWT(Standard Widget Toolkit)是Eclipse的一个重要组成部分,它提供了一组用于构建用户界面的API,与Java Swing...

    Eclipse SWT 开发参考

    - **轻量级封装**:SWT对Java GUI库进行了轻量级封装,使其更加贴近本地操作系统的外观和感觉。 - **性能优化**:利用JNI技术,SWT能够更好地处理GUI应用程序中的性能问题。 - **跨平台支持**:虽然SWT具有本地化的...

    Eclipse+SWT_JFace核心应用 随书光盘.zip

    JFace的一些关键特性包括模型-视图-控制器(MVC)架构,视图和编辑器的抽象,以及对SWT组件的包装,使得它们更容易进行数据驱动的编程。 随书光盘中可能包含以下内容: 1. 源代码示例:读者可以下载并运行书中介绍...

    org.eclipse.swt.win32.win32.x86_3.3.0.v3346.jar

    Eclipse SWT是Java编程中用于构建用户界面的一种库,它允许开发者使用操作系统原生的控件,从而提供更接近本地应用的用户体验。 SWT是Eclipse项目的一部分,它是一个开放源代码的开发工具平台,广泛用于创建Java...

    org.eclipse.swt.rar

    总的来说,org.eclipse.swt.rar为我们提供了深入理解SWT的窗口,通过研究源码,我们可以更好地掌握GUI编程的技巧,创造出更高效、更美观的应用程序。无论你是初学者还是经验丰富的开发者,深入研究SWT都将对你的Java...

    Java内嵌浏览器eclipse.swt插件版

    在这个场景下,"Java内嵌浏览器eclipse.swt插件版"指的是使用SWT来实现Java应用程序中的内嵌浏览器功能。 SWT是Eclipse项目的一部分,设计用于替代Java Swing,提供更丰富的图形用户界面和更好的性能。它利用了操作...

    Eclipse_Swt_Jface_核心应用

    SWT是Eclipse基金会的一个开源项目,它直接与操作系统进行交互,提供了与本机系统UI一致的控件。SWT的核心理念是提供一个轻量级、高效的用户界面API,克服了Java AWT和Swing的性能和外观限制。SWT通过JNI (Java ...

    Eclipse SWT 3.106 arm 版 适配 uos 飞腾等国产操作系统

    2. **JFace**:JFace是Eclipse平台的一部分,建立在SWT之上,提供了一层抽象,简化了GUI编程。它包含了一些高级控件、对话框和数据绑定机制,帮助开发者更快地构建用户界面,而无需直接处理SWT的低级细节。 3. **...

    java eclipse swt教程

    Java Eclipse SWT教程是Java开发中的一个重要领域,主要涉及如何在Eclipse环境中使用SWT(Standard Widget Toolkit)来创建丰富的桌面应用程序界面。SWT是Eclipse基金会推出的一种GUI库,它为Java开发者提供了一种与...

Global site tag (gtag.js) - Google Analytics