知识大全 在Eclipse中使用SWT进行界面设计
Posted 部件
篇首语:我活着是为学习,而学习并不是为活着。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 在Eclipse中使用SWT进行界面设计相关的知识,希望对你有一定的参考价值。
在Eclipse中使用SWT进行界面设计 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
为什么要使用SWT?
SWT是一个IBM开发的跨平台GUI开发工具包 至于为什么IBM要费劲自己另起炉灶开发一个GUI工具包 而不是使用Sun现有的由AWT Swing Java D Java D等构成的Java GUI框架 那就说来话长了
在SWT之前 Sun已经提供了一个跨平台GUI开发工具包AWT (Abstract Windowing Toolkit) 虽然AWT框架也使用的是原生窗口部件(native widgets) 但是它一直未能突破LCD问题 LCD问题导致了一些主要平台特征的遗失 如果你不明白的话(其实我也没明白) 换句话说 如果平台A有窗口部件(widgets) – 而平台B有窗口部件(widgets) – 那么跨平台的AWT框架只能提供这两个窗口部件集的交集
为解决这个问题 Sun又创建了一个新的框架 这个框架不再使用原生窗口部件 而是使用仿真窗口部件(emulated widgets) 这个方法虽然解决了LCD问题 并且提供了丰富的窗口部件集 但是它也带来了新的问题 例如 Swing应用程序的界面外观不再和原生应用程序的外观相似 虽然在JVM中这些Swing应用程序已经得到了最大程度的性能改善 但是它们还是存在着其原生对应物所不具有的性能问题 并且 Swing应用程序消耗太多的内存 这样Swing不适于一些小设备 如PDA和移动电话等
IBM进行了尝试以彻底解决AWT和Swing框架带来的上述问题 最终 IBM创建了一个新的GUI库 这就是SWT SWT框架通过JNI来访问原生窗口部件 如果在宿主(host)平台上无法找到一个窗口部件 SWT就会自动地模拟它
SWT应用程序的组成
一个SWT应用程序的基本组成部分为显示界面(Display) 命令界面(Shell 使命令进入并使运行初始化)和窗口部件(Widgets) Display负责管理事件循环和控制UI线程和其他线程之间的通讯 Shell是应用程序中被操作系统窗口管理器管理的窗口 每个SWT应用程序至少需要一个Display和大于等于 个的Shell实例
图 从不同的角度看SWT应用程序
图 从不同的角度展示了SWT应用程序 左侧的图是一个简化的UI对象的继承图 中间的图展示了UI对象的容器结构(containment structure) 右侧的图则是创建后的UI外观
如果一个应用程序使用了多个线程 那么每个线程都使用的是Display对象分配给它自己的实例 程序员可以使用静态方法Display getCurent()来得到Display对象的当前活动的实例
Shell用于在特定的操作系统中表现窗口 Shell可以最大化 最小化或正常化 Shell有两种类型 第 种是高层shell 它是Display的子窗口 同时它也是一个主窗口 第 类是对话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作为风格位参数
进行SWT开发前的环境设置
为了进行SWT应用开发 你需要把SWT库添加到类路径(classpath)上 并设置必要的环境变量
首先 你要在ECLIPSE_HOME\\eclipse\\plugins\\ eclipse swt win _ \\ws\\win 目录下找到swt jar库文件 注意这里的 eclipse swt win _ 目录是和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 win in java library path at java lang ClassLoader loadLibrary(Unknown Source) at java lang Runtime loadLibrary (Unknown Source) at java lang System loadLibrary(Unknown Source) at eclipse swt internal Library loadLibrary(Library java: ) at eclipse swt internal win OS <clinit>(OS java: ) at eclipse swt widgets Display internal_new_GC(Display java: ) at eclipse swt graphics Device init(Device java: ) at eclipse swt widgets Display init(Display java: ) at eclipse swt graphics Device <init>(Device java: ) at eclipse swt widgets Display <init>(Display java: ) at eclipse swt widgets Display <init>(Display java: ) at swtdesigner trytry main(trytry java: ) Exception in thread main
按下面的步骤设置java library path变量 依次打开Run > Run…… > Java Applicaton > Project >Arguments > VM Arguments 在 VM Arguments 中输入
Djava library path=c \\eclipse\\plugins\\ eclipse swt win _ \\os\\win \\x
注意要输入你自己的swt jar所在的路径
小技巧 加载原生库
cha138/Article/program/Java/ky/201311/28086相关参考
基于Eclipse3.0的SWT编程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一SWT简介
Eclipse下配置swt开发环境 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 创建存储过程的
Eclipse中用SWT和JFace开发入门 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!可以使用
使用EclipseSWT控件开发WEB应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Smart
Eclipse开发经典教程:SWT事件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在窗口系统中程
前段时间做os课程设计我选择了用java做但界面的设计很困难于是应用的swt插件由于swt为第三方插件所以打包时就要进行特殊的处理一下是我的步骤 一打包发布SWT程序 因为需要SWT的jar但
用Eclipse进行可视化Java界面设计(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java桌面应用程序设计:SWT简介 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java语言
在SWT中使用OLE操纵Excel(四) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 使单元格
在SWT中使用OLE操纵Excel(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 为Exc