`
冷漠过客
  • 浏览: 5968 次
社区版块
存档分类
最新评论

SWT 初探

阅读更多
一 swt 简单介绍:
正如 Eclipse 的 Web 站点上所提到的,Eclipse 是一种通用工具平台。它是一个开放的、可用于任何东西的可扩展 IDE,没什么特别之处,它为工具开发人员提供了灵活性以及对软件技术的控制。

Eclipse 为开发人员提供了生产大量 GUI 驱动的工具和应用程序的基础。而这项功能的基础就是 GUI 库 SWT 和 JFace。

SWT 是一个库,它创建了Java 版的本地主机操作系统 GUI 控件。它依赖于本机实现。这意味着基于 SWT 的应用程序具有以下几个关键特性:
1.它们的外观、行为和执行类似于“本机”应用程序。
2.所提供的窗口小部件(widget)反映了主机操作系统上提供的窗口小部件(组件和控件)。
3.主机 GUI 库的任何特殊行为都在 SWT GUI 中得到反映。

这些目标使得 SWT 不同于 Java 技术的 Swing,Swing 的设计目标是消除操作系统的差异。

在开始之前,我需要介绍一些 SWT 术语:
Widget —— 基本的 SWT GUI 组件(类似于 Java AWT 中的 Component 和 Swing 中的 JComponent)。Widget 是一个抽象类。
Control —— 拥有操作系统的对等物的窗口小部件(换句话说,在操作系统中具有同一身份)。Control 是一个抽象类。
Composite —— 包含其他控件的控件(类似于 Java AWT 中的 Container 和 Swing 中的 JPanel)。
Item —— 其他控件包含的窗口小部件(该控件可能不是复合控件),比如列表和表。注意,包含一些项的控件很少包含其他控件,反之亦然。Item 是一个抽象类。

二  SWT中的Display 对象和 Shell对象 :
下面我来介绍两个非常重要的SWT中的对象,一个是Display对象,另外一个是shell对象,他们是一切的基础
我们书写swt程序的步骤,这些步骤是:

1.      创建一个Display对象

2.      创建一个或者多个Shell对象,你可以认为Shell代表了程序的窗口。

3.      在Shell内创建各种部件(widget)

4.      对各个部件进行初始化(外观,状态等),同时为各种部件的事件创建监听器(listener)

5.      调用Shell对象的open()方法以显示窗体

6.      各种事件进行监听并处理,直到程序发出退出消息

7.      调用Display对象的dispose()方法以结束程序。

Display:与操作系统沟通的桥梁

我们在前面说过,每个swt程序在最开始都必须创建一个Display对象。Display对象起什么作用呢?它是swt与操作系统沟通的一座桥梁。它负责swt和操作系统之间的通信。它将swt/JFace的各种调用转化为系统的底层调用,控制操作系统为swt分配的资源。同时我们也可以通过Display对象得到操作系统的一些信息。

Display是一个“幕后工作者”,它为swt/JFace提供支持,但是你并不能够从某个用户界面中看到它的影子。

在前面的Hello,world!程序中,我们可以看到构建一个Display对象是和普通的Java对象一样通过构造函数实现的。它为实现图形界面准备了最基本的条件。而在程序结束时我们必须显式地调用dispose() 方法来释放程序运行中所获得的资源。一般来说,一个程序只需要一个Display对象,当然没有人禁止你创建多个Display对象。但是在swt的javadoc中,我们可以看到关于这个问题一些描述:

“Applications which are built with SWT will almost always require only a single display. In particular, some platforms which SWT supports will not allow more than one active display. In other words, some platforms do not support creating a new display if one already exists that has not been sent the dispose() message.”

Display有着众多的方法,我们不可能一一介绍。在这里只挑选几个可能会比较常用的作一些简单介绍。

setData()和getData():这一对函数允许我们为Display对象设定一些数据,setData()的参数中key和value类似于我们在使用Map对象中key和value的含义。

getShells()得到关联到该Display对象的所有没有dispose的Shell对象

getCurrent()得到与用户交互的当前线程

readAndDispatch()得到事件并且调用对应的监听器进行处理

sleep()等待事件发生

Shell:窗口

一个Shell对象就是一个窗口。你可以在上面放置各种部件创建丰富的图形界面。

我们都知道窗口有很多种,比如窗口有可以调整大小的,有不可以的,有的没有最大化最小化按钮。这些窗体的特征在swt中被成为风格(style)。一个窗体的风格可以用一个整数进行定义。这些风格的定义在org.eclipse.swt.SWT中。

Shell对象可用的风格包括:BORDER, CLOSE, MIN, MAX, NO_TRIM, RESIZE, TITLE , PLICATION_MODAL, MODELESS, PRIMARY_MODAL,S YSTEM_MODAL

这些风格我们不作一一介绍,你可以从他们字面意义看出一些含义来,当然也可以参考对应的javadoc。

我们可以在一个Shell的构造函数中定义它的风格,比如在前面的Hello,world!程序中,我们可以这样定义Shell。
Shell shell = new Shell(display,SWT.CLOSE | SWT.SYSTEM_MODAL);
最后得到的窗体没有最大化和最小化按钮,并且大小是固定不变的。

因为swt运行于各种平台之上,而这些平台上的窗口管理器千差万别,所以所有这些风格都不是肯定可以实现的。在swt的javadoc中,这被称为暗示(hints)。

Shell对象的方法大都和GUI有关,比如setEnabled()设定了窗体是否能够和用户进行交互,setVisble()设定了窗体是否可见,setActive()将窗体设为当前的活动窗口。

我们可以用open()方法打开一个窗体,close()方法关闭一个窗体。

三:SWT 常用组件
1按钮组件(Button)

  (1)Button组件常用样式

    SWT.PUSH按钮

    SWT.CHECK多选按钮

    SWT.RADIO单选按钮

    SWT.ARROW箭头按钮

    SWT.NONE默认按钮

    SWT.CENTER文字居中与SWT.NONE

    SWT.LEFT左对齐

    SWT.RIGHT右对齐

    SWT.BORDER深陷型按钮

    SWT.FLAT平面型按钮

    一个Button可以指定多个样式,只要将指定的各个样式用符号“|”连接起来即可

    Button bt=new Button(shell,SWT.CHECK|SWT.BORDER|SWT.LEFT);

    多选、深陷、左对齐

  (2)Button组件的常用方法

    setText(String string),设置组件的标签文字

    setBounds(int x,int y,int width,int height);//设置组件的坐标位置和大小

    setEnabled(Boolean enabled);设置组件是否可用,默认为true

    setFont(Font font);设置文字的字体

    setForeground(Color color);设置前景色

    setBackground(Color color);设置背景色

    setImage(Image image);设置显示用的图片

    setSelection(Boolean selected);设置是否选中,默认为false

    setToolTipText(String string);设置鼠标停留在组件上是显示的提示信息



2标签组件(Label)

  (1)Label常见式样

    SWT.CENTER  居中

    SWT.RIGHT  右对齐

    SWT.LEFT  左对齐

    SWT.NONE  默认样式

    SWT.WRAP  自动换行

    SWT.BORDER  深陷型

    SWT.SEPARATOR  分栏符,默认为竖线分栏符

    HORIZONTAL  横线分栏符



3文本框组件(Text)

  (1)Text常见式样

    SWT.NONE  默认式样

    SWT.CENTER

    SWT.RIGHT

    SWT.LEFT

    SWT.MULTI  可以输入多行,需回车换行

    SWT.WRAP  可以输入多行,自动换行

    SWT.PASSWORD  密码型,输入字符显示成“*”

    SWT.BORDER    深陷型

    SWT.V_SCROLL  垂直滚动条

    SWT.H_SCROLL  水平滚动条


4下拉框组件(Combo)

  (1)Combo常见样式

    SWT.NONE    默认

    SWT.READ_ONLY  只读

    SWT.SIMPLE    无需单击下拉框,列表会一直显示


  (2)Combo下拉框常用方法

    add(String string)  在Combo上添加一项

    add(String string,int index)  在Combo的第index(从0开始)项后插入一项

    deselectAll()    使Combo组件中的当前选项为空

    removeAll()      将Combo中的所有选项清空

    setItems(String[] items)  将数组中的各项依次加入到Combo中

    select(int index)  将Combo的第index+1项设置为当前选择项


5列表框组件(List)

  (1)List常见样式

    SWT.NONE    默认样式

    SWT.V_SCROLL  带垂直滚动条

    SWT.MULTI    允许复选

    SWT.SINGLE    允许单选

  (2)常用方法

    List和Combo组件的方法是一样的,但由于List可选择多项,而Combo只能选择一项

  ,所以List没有getText()方法,List的取值使用getSelection(),返回一个String

  数组。

6菜单(Menu,MenuItem)

    菜单(Menu、MenuItem)是常用的SWT组件,Menu是一个菜单栏,同时也是一个容器

  ,可以容纳菜单项(MenuItem)

  (1)Menu样式

    SWT.BAR    菜单栏,用于主菜单

    SWT.DROP_DOWN  下拉菜单,用于子菜单

    SWT.POP_UP    鼠标右键弹出菜单

  (2)MenuItem式样

    SWT.CASCADE    有子菜单的菜单项

    SWT.CHECK    选中后前面显示一个小勾

    SWT.PUSH    普通型菜单

    SWT.RADIO    选中后前面显示一个圆点

    SWT.SEPARATOR  分隔符

  (3)建立菜单一般步骤

    ①首先建立一个菜单栏,需要用到SWT.BAR属性

      Menu mainMunu=new Menu(shell,SWT.BAR);

    ②在窗体中指定需要显示的菜单栏

      shell.setMenuBar(mainMenu);

    ③创建顶级菜单项,需要使用SWT.CASCADE属性

      MenuItem fileItem=new MenuItem(mainMenu,SWT.CASCADE);

      fileItem.setText("file&F");

    ④创建与顶级菜单项相关的下拉式菜单

      Menu fileMenu=new Menu(shell,SWT.DROP_DOWN);

    ⑤将顶级菜单项与下拉菜单关联

      fileItem.setMenu(fileMenu);

    二级菜单的建立只需要重复③~⑤即可

容器类

1面板(Composite)

  (1)Composite常用方法

    getLayout()  获得布局管理器

    getLayoutData()    得到布局数据

    getParent()    得到容纳该容器的父容器

    getShell()    得到容纳该容器的Shell

    layout()    将容器上的组件重新布局,相当于刷新

2分组框(Group)

    Group是Composite的子类,所以两者用法基本相同。主要区别是Group显示有一个方框,且方

  框线上还可以显示说明文字

3选项卡(TabFolder、TabItem)

    选项卡包括一个选项卡(TabFolder类)和一个选项页(TabItem类),TabFolder是容器,可

  以容纳其它容器和组件,但TabItem不是容器,可以把它看成是一个选项标签,TabFolder通过

  TabItem来对其中的组件进行控制。每一个TabItem用setControl()来控制一个界面组件。
四 一个简单的例子:
Display display=new Display();
Shell shell = new Shell (display, SWT.CLOSE);
shell.setText("SWT 初探");
shell.setSize(600, 600);
Label label =new Label(shell,SWT.NONE);
label.setText("SWT 初探");
label.setBounds(0, 0, 100, 100);
shell.open();
while (!shell.isDisposed()) {
   if (!display.readAndDispatch())
      display.sleep();
    }
display.dispose();

五 参考资料:
http://www.ibm.com/developerworks/cn/opensource/os-jface1/
http://blog.csdn.net/chulaixi/article/details/3095478
http://www.cnblogs.com/happyPawpaw/archive/2012/10/19/2730478.html

分享到:
评论

相关推荐

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

    标题“swt-64.rar_64位swt_64的SWT_SWT64_swt.jar 64位_swt64位”表明这个压缩包包含了适用于64位Windows操作系统的SWT库。描述中提到的“64位windows操作系统使用的SWT库”进一步确认了这一点。 SWT的设计目标是...

    SWT源码 swt.jar

    SWT(Standard Widget Toolkit)是Eclipse项目的一个重要组成部分,它提供了一套用于构建图形用户界面(GUI)的API,与Java Swing不同,SWT基于操作系统原生的UI组件,因此能够实现更好的性能和与操作系统的集成。...

    SWT配置 SWT配置 SWT配置 SWT配置 SWT配置

    ### SWT配置详解 #### 一、SWT简介与配置的重要性 SWT(Standard Widget Toolkit)是一种用于构建基于Java的应用程序的图形用户界面工具包。它提供了丰富的控件集,并能够生成本地外观和感觉的界面,这使得应用在...

    swt-api swt DOC

    【标题】"swt-api swt DOC" 指的是一个关于SWT(Standard Widget Toolkit)API的文档,主要用于Java GUI(图形用户界面)开发。这个文档可能是开发者们在使用SWT进行界面设计时的重要参考资料。 【描述】"java界面...

    swt教程 有关SWT怎么应用

    在本文中,我们将深入探讨SWT(Standard Widget Toolkit)的应用,以及如何在Java应用程序中使用它。SWT是由IBM公司为Eclipse集成开发环境设计的一种图形用户界面(GUI)工具包,它通过JNI(Java Native Interface)...

    java界面库swt.jar 4.911

    下载编译的SWT库,版本号4.911,包含多个版本: org.eclipse.swt.cocoa.macosx.x86_64 org.eclipse.swt.gtk.linux.aarch64 org.eclipse.swt.gtk.linux.arm org.eclipse.swt.gtk.linux.ppc64le org.eclipse.swt.gtk....

    SWT JFace 按键、事件、监听

    ### SWT JFace 按键、事件、监听 #### 概述 SWT(Standard Widget Toolkit)是Eclipse平台下的图形界面开发工具包,而JFace则是基于SWT之上的高级用户界面工具集。SWT提供了低级别的组件,用于创建跨平台的图形...

    swt工具文档 swt工具文档

    SWT(Standard Widget Toolkit)是Java编程环境中一个用于创建图形用户界面(GUI)的开源库。它是Eclipse项目的一部分,旨在提供与操作系统更紧密的集成,使得开发者可以创建原生外观的应用程序。SWT提供了丰富的...

    SWT examples,SWT官方例子

    SWT examples,SWT官方例子:http://www.eclipse.org/swt/examples.php 该页面所要下载的例子 其中,swt的例子在\plugins\org.eclipse.swt.examples.source_3.7.0.v3740f.jar中

    java swt自定义控件

    Java SWT(Standard Widget Toolkit)是Java平台上用于创建桌面应用程序的一个库,它提供了丰富的用户界面元素,如按钮、文本框、列表等。SWT是Eclipse IDE的基础,它通过与操作系统直接交互来提供本地化的图形用户...

    swt table 实现换行

    根据提供的文件信息,可以看出本文主要讨论的是如何在 SWT (Standard Widget Toolkit) 的 Table 控件中实现文本换行的功能。SWT 是一个用于开发基于 Java 的桌面应用程序的工具包,它提供了丰富的用户界面组件来帮助...

    DJNativeSwing-SWT.jar、DJNativeSwing.jar、swt-win-x64.jar

    Java平台上的图形用户界面(GUI)开发通常依赖于各种库和框架,DJNativeSwing和SWT(Standard Widget Toolkit)是其中两个重要的组件。本文将详细介绍这三个提及的JAR文件以及它们在Java应用中的作用。 首先,...

    swt.jar swt.jar swt.jar

    swt.jar swt.jar swt.jar swt.jar swt.jar

    org.eclipse.swt.win32

    org.eclipse.swt.SWT.class org.eclipse.swt.SWTError.class org.eclipse.swt.SWTException.class org.eclipse.swt.accessibility.ACC.class org.eclipse.swt.accessibility.Accessible.class org.eclipse.swt....

    SWT 弹出对话框 可以选择的图标种类

    SWT(Standard Widget Toolkit)是Java编程中用于创建图形用户界面(GUI)的一种库,它为开发者提供了丰富的控件和对话框。在SWT中,`MessageBox`是一个用于显示简单的消息对话框的类,通常用来向用户显示警告、确认...

    swt windows平台64位的包

    SWT (Standard Widget Toolkit) 是一个开放源代码的Java库,用于在各种操作系统上创建图形用户界面(GUI)。它是Eclipse项目的一部分,提供了一种替代Java标准库AWT和Swing的方式,允许开发者构建与本机系统更加紧密...

    SWT源代码 SWT Source code

    SWT(Standard Widget Toolkit)是Eclipse开源项目中的一部分,主要用于构建GUI(图形用户界面)应用程序。它提供了一组与操作系统紧密集成的图形控件,允许开发者创建原生外观的应用程序。SWT的设计目标是提高性能...

    SWT_全接触 SWT_全接触 SWT_全接触

    根据给定的信息,本文将详细介绍SWT(Standard Widget Toolkit)的相关知识点,包括其背景、特点、与AWT/Swing的对比以及如何开始使用SWT。 ### SWT简介 SWT(Standard Widget Toolkit)是一个开放源码的原生GUI...

    swt源码和jar包dj-native-swing-swt.jar

    在标题提到的"swt源码和jar包dj-native-swing-swt.jar"中,"dj-native-swing-swt.jar"是一个特殊的库,它结合了SWT和JNativeSwing,允许在Java Swing应用中嵌入SWT组件。这使得开发者可以在同一应用程序中同时使用...

    SWT 插件包 (windows 环境)

    **SWT 插件包(Windows 环境)** SWT,全称为Standard Widget Toolkit,是Java编程语言中用于创建图形用户界面(GUI)的一个开源库。它由Eclipse基金会维护,主要用于Eclipse集成开发环境(IDE)以及其他Java应用...

Global site tag (gtag.js) - Google Analytics