在Eclipse中用SWT设计界面

2016-01-29 13:01 488 1 收藏

在Eclipse中用SWT设计界面,在Eclipse中用SWT设计界面

【 tulaoshi.com - Java 】

  1. 为什么要使用SWT?

  SWT是一个IBM开发的跨平台GUI开发工具包。至于为什么IBM要费劲自己另起炉灶开发一个GUI工具包,而不是使用Sun现有的由AWT, Swing, Java 2D, Java 3D等构成的Java GUI框架,那就说来话长了。(记得在一个BBS上读过一个关于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实例。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/java/)

    图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, 〈styleBits〉 )。可以使用或(OR)操作符“|”来设置多个风格位。例如,如果想设置一个带边界的压下按钮,需要传递SWT.PUSH | SWT.BORDER作为风格位参数。

  3. 进行SWT开发前的环境设置

  为了进行SWT应用开发,你需要把SWT库添加到类路径(classpath)上,并设置必要的环境变量。

  首先,你要在ECLIPSE_HOMEeclipsepluginsorg.eclipse.swt.win32_2.1.0wswin32目录下找到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) 
 

来源:http://www.tulaoshi.com/n/20160129/1488574.html

延伸阅读
到扁平化时代,吸引用户已经不能靠质感了,那还有什么利器可以为用户体验加分呢?请不要忽略版式设计!虽然以前大多运用在平面设计中,但时日不同,UI设计师也要学习了,因为它真的很有用,今天这篇好文总结了目前最流行的13种移动界面版式设计,还有实例分析,赶紧来学习。 一、前言 随着信息和技术的发展,手机屏幕越来越大,界面开始承载越...
标签: Painter
在Painter中想要为图片部分替换颜色,除了可以用魔术棒选取,还可以利用颜色选取形成新的通道,转为选区,重新定义这个颜色。这个技巧在photoshop中可能大家已经很熟悉了,就是color range的命令,painter同样可以做到…… 1.打开Channels(通道面板)的三角隐藏菜单,选择New from color range(从色彩范围获得新通道)。 2.在弹出...
在开始编写代码之前,先添加对Outlook8.0objectlibrary的引用。 代码如下: OptionExplicit DimAppAsObject DimItmAsObject SetApp=CreateObject("Outlook.Application") SetItm=App.CreateItem(0) WithItm .Subject="AtipfromvbCodeMagician" .To="newvb@21cn.com" .Body="VB编程...
1、介绍 Eclipse Form是Eclipse 3.0的新特性。 Eclipse Form是一组定制小部件和支持类组成的插件,以前由PDE和Update组件内部使用,在Eclipse 3.0中已经成为公用API。 Eclipse Form提供: ·适合包含到内容区域(编辑器或视图)中的“Form”概念 ·用来管理颜色、超链接组和其它象SWT控件一样的Form外观的工具包 ·象HTML表格一样...
在人机交互理论中,费茨法则是非常基本的准则。无论是桌面界面设计还是笔记本的界面设计,都要遵循这一定则,对于日益复杂的移动设备来说,这一法则是否依然适用?我们一起来探索一下。 首先,来了解一下什么是费茨法则。Fitts法则最基本的观点就是任何时候,当一个人用鼠标来移动指针时,屏幕上的目标的某些特征会使得点击变得轻松或者困难。...

经验教程

58

收藏

25
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部