`
Jameslyy
  • 浏览: 408969 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SWT —— Standard Widget Toolkit

阅读更多

1.1 SWT— Standard Widget Toolkit

        Standard Widget Toolkit (SWT) 即“标准小部件工具包”,SWT为Java 开发者提供了可移植的 API ,SWT和操作系统底层的本地GUI平台关系紧密。本质上,SWT是用Java语言对操作系统本地GUI的封装和绑定。

        在Eclipse 平台中,很多低层次用户界面编程任务是在较高层次上处理的,例如JFace viewer 和 action 实现了应用程序和小部件之间的交互。SWT是实现Eclipse界面的基础。

 

可以执行和平台集成

       SWT定义了通用的、可移植的、跨平台的API,SWT使用各个平台上的本地部件实现它的API,这使得SWT能够在所有平台上维护一个一致的编程模型,能够呈现底层操作系统图形用户界面,使得SWT部件能够对界面上的任何变化快速作出反应。

 

1.2 Widgets

      SWT包含很多富态特性,要实现有用和健壮的应用程序,需要学习和理解SWT核心部分——widgets, layouts 与events。

 

SWT 应用程序结构

        如果通过Eclipse 工作台扩展点创建用户界面,Eclipse工作台会处理SWT启动机制。如果是在Eclipse工作台之外写一个SWT程序,就需要更多的理解SWT应用程序的结构。

 

一个典型的独立的SWT应用程序包含如下结构:

  • 创建一个表示SWT Session的 Display  对象
  • 创建一个或多个Shell  对象,作为应用程序的主窗口
  • 在shell中创建需要的小部件
  • 初始化部件的尺寸和其他必要的状态,为部件注册事件监听器
  • 打开shell 窗口
  • 运行事件调度循环,直到程序退出,一般是用户关闭了主窗口Shell.
  • 销毁 display 对象

下面的代码片段展示了具体SWT程序结构:

public static void main (String [] args) {
      Display display = new Display ();  // Display
      Shell shell = new Shell (display);  // Shell

      Label label = new Label (shell, SWT.CENTER);
      label.setText ("Hello world");
      label.setBounds (shell.getClientArea ());
      
      //
      shell.open ();
      
      // 
      while (!shell.isDisposed ()) {
         if (!display.readAndDispatch ()) display.sleep ();
      }
      display.dispose ();
}

 

Display

        Display 对象关联SWT和底层平台GUI,主要用来管理平台事件循环,控制UI 线程和其他线程之间的交互。

 

        对于大多数SWT程序来说,可以遵循上面的模式,在创建任何窗口之前,必须创建一个display对象,关闭shell时销毁display 对象。除非是多线程应用,一般不用太多考虑display。

 

Shell

        一个Shell 就是一个操作系统平台窗口管理器管理的窗口,顶层shell 是作为 display 的孩子对象创建的,用户可以移动,改变大小,最大化和最小化这些窗口。另外一些shell 是作为其他 shell的子shell 创建的,这些窗口一般用做对话框窗口和其他临时窗口,存在于其他窗口上下文环境。

 

父子关系

        只要不是顶层shell,所有的widget部件都必须有一个parent,顶层shell 没有parent,但是和一个display关联,可以通过getDisplay() 访问 display。 所有其他的widgets都是顶层shell 的后代(直接或非直接)。

 

Composite widgets 是可以包含子元素的部件。

 

        可以把一个应用程序窗口看作一个wedgit树,或是层级,根是一个shell,根据应用的复杂度不同,shell可能只有一个子元素,或者拥有包含子元素的具有层级关系的多个composites。

 

设置样式 (Style bits)

        一些部件必须要在创建的时候设置属性,并且不能再进行修改,例如list列表,可能是单选或多选的,可能有或没有滚动条。

        一般是在构造方法中设置这些属性,所有widget部件的构造方法都有个设定样式的int 参数,这个int参数按 位或 的关系指定所有希望的样式。

        样式常量包含在SWT  类中,作为SWT  的public static 成员存在。

 

释放资源 (Resource Disposal)

        在SWT下面的底层平台要求明确分配和释放系统资源。为了保证和SWT 的设计思想——在部件工具包中反应平台应用程序结构——的一致性,SWT 要求明确释放 任何分配的操作系统资源。Widget.dispose() 方法用来释放和特定工具包对象关联的资源。

 

经验的做法是,如果你创建了一个对象,就必须销毁它,下面是一些具体的规则:

  • 如果你用构造方法创建了一个图像对象或部件,在用完之后必须明确的销毁它
  • 当一个Compsite销毁时,这个Composte和所有的子部件都会递归的销毁,在这种情况下,你不需要销毁部件。但是,必须释放任何与部件关联的图像资源
  • 如果不是通过构造方法获得的图形对象或部件,不需要销毁它,因为您并没有直接创建这个资源
  • 如果向其他对象传递了一个部件或图像对象的引用,必须注意在资源被使用时不要销毁
  • 如果创建了一个图形对象并在部件的生命周期中使用它,必须在部件销毁时销毁图形对象,可以为部件注册一个dispose listener,在dispose 事件触发时销毁图形对象

        并不是所有使用SWT中的类生产的对象都需要销毁,对于普通数据对象,例如 RectanglePoint ,它们没有使用操作系统资源,没有 dispose() 方法,不需要释放它们。

 

Reference:

http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/swt.htm

 

分享到:
评论

相关推荐

    Standard Widget Toolkit(Java swt)类库以及安装文档

    Standard Widget Toolkit(SWT)是Java编程环境中用于创建图形用户界面(GUI)的一种开源库。它与Java的抽象窗口工具包(AWT)和Java Swing不同,SWT直接与操作系统API交互,提供了更加原生、性能更优的用户体验。在...

    SWT,The Standard Widget Toolkit

    SWT Widget Fundamentals, Keyboard, Mouse, Control Fundamentals, Display, Tool Bars and Menus, Advanced Controls

    The Standard Widget Toolkit

    SWT(Standard Widget Toolkit)是一种用于构建Java图形用户界面的跨平台工具包,它利用本地操作系统资源来创建高性能的应用程序界面。与AWT和Swing等其他Java GUI库不同,SWT更注重于提供原生外观和性能,因此在...

    SWT,The Standard Widget Toolkit Volume 1

    ### SWT:标准部件工具包(The Standard Widget Toolkit)概览 #### 一、SWT简介与背景 SWT,即标准部件工具包(The Standard Widget Toolkit),是为Java开发者设计的一个强大的图形用户界面(GUI)构建库。它由...

    SWT.The.Standard.Widget.Toolkit.Volume.1

    The Standard Widget Toolkit (SWT) is a new class library for creating graphical user interfaces (GUIs) in Java. Created as part of the Eclipse project, SWT allows developers to build efficient, ...

    SWT: The Standard Widget Toolkit, Volume 1

    The Standard Widget Toolkit (SWT) is a new class library for creating graphical user interfaces (GUIs) in Java. Created as part of the Eclipse project, SWT allows developers to build efficient, ...

    The Java Foundation Classes (J.F.C.Swing) API and SWT (The Eclipse Standard Widget Toolkit).pdf

    SWT(Standard Widget Toolkit)是由Eclipse项目提供的另一个用于创建GUI的工具包。与Swing不同的是,SWT是基于本地操作系统的窗口系统进行渲染的,这意味着它能够提供更加原生的外观和性能。SWT组件通过本地操作...

    Standard widget Toolkit

    SWT,全称Standard Widget Toolkit,是一个用于创建图形用户界面(GUI)的开源Java库。它由Eclipse基金会维护,是Eclipse IDE和其他基于Eclipse RCP(Rich Client Platform)的应用程序的基础组件之一。SWT的设计...

    swt-4.3-win64.rar,swt-4.3-win32-x86.jar

    SWT (Standard Widget Toolkit) 是一个开放源代码的Java库,用于创建图形用户界面(GUI)。这个库由Eclipse基金会维护,它允许Java开发者利用操作系统原生的窗口、控件和外观,使得Java应用程序可以拥有与本地应用...

    swt-64.rar_64位swt_64的SWT_SWT64_swt.jar 64位_swt64位

    SWT(Standard Widget Toolkit)是Java编程环境中一个用于创建图形用户界面(GUI)的开源库,它是Eclipse项目的一部分。标题“swt-64.rar_64位swt_64的SWT_SWT64_swt.jar 64位_swt64位”表明这个压缩包包含了适用于...

    java程序设计之swt教程.rar

    SWT(Standard Widget Toolkit)  Standard Widget Toolkit是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是用SWT开发的。

    swt自学资料.rar

    SWT(Standard Widget Toolkit)即标准小窗口工具箱,是IBM公司推出的一种在Eclipse中使用的集成开发环境,SWT提供可移植的API,并与底层本机OS GUI平台紧密集成,它是一个与本地窗口系统集成在一起的小部件集和图形...

    swt.jar (写java/引用/swt包)

    swt.jar SWT(Standard Widget Toolkit) Standard Widget Toolkit是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是用SWT开发的。 在SWT之前,Sun已经提供了一个跨平台GUI开发工具包AWT ...

    SWT源代码(C、java部分)

    SWT(Standard Widget Toolkit) Standard Widget Toolkit是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是用SWT开发的。 本资源是SWT的全部源代码,包括SWT中dll文件的C语言代码

    swt form

    标题“swt form”指的是SWT(Standard Widget Toolkit)中的表单组件,这是一种在Java中创建桌面应用程序用户界面的库。SWT是Eclipse项目的一部分,它提供了与操作系统本机UI控件直接交互的能力,因此可以创建出更...

    swt-3.6.2-win32-win32-x86

    SWT(Standard Widget Toolkit) Standard Widget Toolkit是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是用SWT开发的。

    swt-4.8M4-win32-win32-x86_64.zip

    eclipse 下的SWT桌面开发库,适用于64位的系统。SWT(Standard Widget Toolkit) Standard Widget Toolkit是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是用SWT开发的。

    swt-4.2.1-gtk-linux-x86.zip

    SWT(Standard Widget Toolkit) Standard Widget Toolkit是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是用SWT开发的。由于在官网下载的速度特别慢,所以在这里特别奉献一份给大家。

    swt-jar.zip

    SWT(Standard Widget Toolkit) Standard Widget Toolkit是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是用SWT开发的。 在SWT之前,Sun已经提供了一个跨平台GUI开发工具包AWT ...

Global site tag (gtag.js) - Google Analytics