swt java 开源项目,SWT-JFace开发入门(SWT程序、JFace程序)

SWT程序

SWT是一套独立的库,用户可以在SWT的基础上很容易地建立自己的应用,本节的目的就是要在SWT上建立一个简单的“Hello world”程序,读者可以在这个简单的程序上建立自己的应用。

加入SWT依赖的包

SWT为用户提供了一套API,用户如果要使用SWT进行开发,必须要把所需的Jar包放在Eclipse项目的ClassPath中。在此笔者采用新建一个插件项目,插件项目会自动引用SWT相关的包,步骤如下。

1. 运行Eclipse。

单击“File”→“New”→“Other”菜单项,在弹出的对话框中选择 Select 对话框左边的 Plug-in Development 向导。如图3所示,选择 Plug-in Project。

c266b5fcd4e366024606b2f484532907.png

图3 新建插件对话框

2. 单击“Next”按钮,弹出新建对话框,输入项目名称。此处使用了“com.free.swtjface.demo”。单击“Next”按钮后弹出新建对话框页,如图4所示。

d984e5964cc8f48b504a6aeeda465e17.png

图4 新建项目

3. 单击“Next”按钮,在接下来的对话框中单击“Finish”按钮,建立一个空的插件项目在此项目中,Eclipse中已经自动引入了此插件所需要依赖的包,其中包括SWT/JFace所用到的包如图5所示。

32409e9b0cdc2e5d9a3d833e095c5954.png

图5 插件依赖的包

如果用户想加入SWT/JFace相关的包,也可以手动加入下面几个包“org.eclipse.swt.win32. win32.x86_*.jar”、“org.eclipse.swt_*.jar”和“org.eclipse.jface_*.jar”到插件的类路径中。

提示:对于初学者,通过创建插件项目自动引入SWT的jar包是一个比较好的方法,如果开发插件项目,用户也不用但心SWT的jar包没有引入的问题。

“Hello world”SWT程序

现在SWT所依赖的包已经加入到了项目的ClassPath中,SWT程序和Java的程序一样,也是通过main函数运行的,如例程1所示。

例程1 HelloWorldSwt.java

publicclassHelloWorldSwt {publicstaticvoidmain(String[] args) {

Display display=newDisplay();

Shell shell=newShell(display);

shell.setText("hello world! Window");

shell.open();while(!shell.isDisposed()) {if(!display.readAndDispatch()) {

display.sleep();

}

}

display.dispose();

}

}

这段程序虽然很简单,但是它反映了书写SWT程序的步骤:

1. 创建一个Display对象。Display对象是SWT和操作系统通信的桥梁。

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

3. 在Shell内创建各种部件(widget),如按钮、下拉框和列表等。

4. 对各个部件进行初始化(外观、状态等),同时为各种部件的事件创建监听器 (listener)。监听器可以监听窗口的消息,在此没有添加监听器,将会在后面的章节重点介绍监听器的注册。

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

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

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

提示:SWT程序的运行和例程1类似,读者如果不清楚SWT程序的运行机制,可以直接复制上面的样板代码就可以了。

运行SWT应用

SWT程序的运行要通过JNI调用相应的操作系统控件,运行SWT程序和运行Java应用程序有点不同,在Eclipse中用户可以选择运行SWT程序(SWT Application)可以运行SWT程序,步骤如下:

1. 打开Java的默认视图,在“Hello world”程序的文件上单击鼠标右键。

2. 选择“SWT Application”菜单,如图6所示。

67ab9ef2a282dd7e7216ac37c5b7bc0e.png

图6 运行SWT程序

3. 单击“SWT Application”菜单运行,运行效果如图7所示。

7de06cb50b25fa95f8729abd640aad02.png

图7 SWT“Hello world”程序

HelloWorldSwt程序只创建了一个窗口(shell),读者可以把shell当作其它组件的父窗口,创建其它组件。

提示:在Eclipse3.3以后,运行SWT程序和运行Java程序是一样的。

JFace程序

JFace 是一个用户界面工具箱,它提供很难实现的、用于开发用户界面功能部件的 helper 类,JFace 在原始的窗口小部件系统的级别之上运行。JFace 使用户可以专注于实现特定插件的功能,而不必花费精力来处理底层窗口小部件系统或者解决几乎在任何用户界面应用程序中都很常见的问题。

“Hello world”JFace程序

JFace的应用程序相对来说更简单,它通过“ApplicationWindow”类实现应用,“ApplicationWindow”把和操作系统交互的细节封装起来了,用户只需要关心自己窗口的建立,程序代码如例程2所示。

例程2

publicclassHelloWorldJFace extends ApplicationWindow {publicHelloWorldJFace() {

super(null);

}protectedControl createContents(Composite parent) {

getShell().setText("hello world! Window");

parent.setSize(400,250);returnparent;

}publicstaticvoidmain(String[] args) {

HelloWorldJFace helloWorldApp=newHelloWorldJFace();

helloWorldApp.setBlockOnOpen(true);

helloWorldApp.open();

Display.getCurrent().dispose();

}

}

其中,JFace的应用程序可以通过重载“createContents(Composite parent)”方法添加窗口的组件到parent组件中。

运行JFace的程序和运行SWT程序一样。

Tags:java,rcp,jface,swt,ibm,eclipse,ui,gui

posted on 2008-05-04 18:35 jadmin 阅读(92) 评论(0)  编辑  收藏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jZoomer开源项目主页:<br>http://code.google.com/p/jzoomer/<br>发布包下载地址:http://code.google.com/p/jzoomer/downloads/list<br>SVN下载地址:<br>http://jzoomer.googlecode.com/svn/trunk/<br><br>软件名:jZoomer<br>版本号:1.2.0<br>作者:talent_marquis<甜菜侯爵><br>联系方式:talent_marquis#163.com, marquisx.tz#google.com<br><br>简介:<br>jZoomer 是一款基于SWT/JFace的桌面应用软件<br>功能:<br>·动态放大镜功能<br>·静态图片缩放功能<br>·颜色拾取功能<br>·测量尺功能<br><br>特性:<br>·支持鼠标拖拽窗体和小控件<br>·支持国际化<br>·可扩展架构<br><br>日志:<br>20080621<br>1. Bug修正:<br> ·修正退出时报异常的Bug<br>2. 功能添加:<br> ·实现测量功能,可测量选中区域大小<br>3. 核心调整:<br> ·在system.properties中添加“tray.message.show”字段用以控制是否在托盘区显示提示信息<br> ·实现TrackerAction用以实现测量功能<br>4. 版本变更:<br> 版本升级为1.2.0<br><br>20080620<br>1. Bug修正:<br> ·修正程序退出时会报异常的Bug<br>2. 功能添加:<br> ·实现左键单击托盘区图标,主窗口开启/隐藏功能<br>3. 核心调整:<br>4. 版本变更:<br> 版本升级为1.1.4<br><br>20080619 2nd<br>1. Bug修正:<br> ·修正开始/暂停监视切换时有时会报空指针异常的错误<br>2. 功能添加:<br> ·实现静止时图片的缩放<br>3. 核心调整:<br> ·动态\静止开关中对图片处理的逻辑改变,以实现静止时图片的缩放功能<br> ·ZoomAction中zoomIn、zoomOut方法更新,支持对静止图片的缩放<br>4. 版本变更:<br> 版本升级为1.1.3<br> <br>20080619<br>1. Bug修正:<br> ·修正取色开启时鼠标双击取色后,色彩信息显示不正常的bug<br>2. 功能添加:<br> ·隐藏/取色后会在系统托盘区有信息提示<br>3. 核心调整:<br> ·在trayItem中加入tooltip用于辅助信息提示<br>4. 版本变更:<br> 版本升级为1.1.2<br><br>20080618 2nd<br>1. Bug修正:<br>2. 功能添加:<br> ·添加用户手册中文版V1.1<br> ·添加用户手册英文版V1.1<br> ·添加ant编译文件,使用“ant package”即可轻松打包发布文件<br> ·调整system.properties的排版,方便阅读<br>3. 核心调整:<br> ·加入fatjar.jar架包,用于打包编译<br>4. 版本变更:<br> 版本升级为1.1.1<br><br>20080618<br>1. Bux修正:<br> ·修正工程中加载lib路径不正确的bug<br> ·修正鼠标滚轮在停止取图监视时使用上的Bug<br> ·修正鼠标进入窗口后,还可以开启监视的Bug<br>2. 功能添加:<br> ·添加色彩信息面板<br> ·实现取色功能,用Ctrl+C开启,双击可以直接取色至剪贴板,单击暂停/开始取色<br>3. 核心调整:<br> ·在Google Code上添加了SVN地址用于维护,地址为:https://jzoomer.googlecode.com/svn/trunk/<br> ·重构鼠标拖拽Widget和面板的方法,增强其扩展性<br> ·添加ColorInfoPanel用于显示和拾取颜色<br> ·在ColorAction添加ColorInfoPanel相关的资源、逻辑和方法<br> ·添加TrackerAction用以实现对图片大小的测量(未实现)<br>4. 版本变更:<br> 版本升级为1.1<br>5. 待做事项:<br> ·停止监控时图片的缩放<br> ·对图片大小的测量(width=xxxpx,height=xxxpx)<br> ·色彩信息面板样式的美化<br> ·build.xml文件<br><br>20080617<br>1. Bug修正:<br> ·修正进出窗口时会报异常的Bug<br>2. 功能添加:<br> ·将开始/暂停监控的快捷键更改为Ctrl+Z<br> ·支持容器内部控件的拖拽(按住Ctrl键)<br> ·支持拖拽容器时移动整个Shell(在空白处)<br> ·拖拽时鼠标变成小手形状<br> ·添加exit.confirm属性用以判断是否在退出时弹出提示框<br>3. 核心调整:<br> ·添加canvas用于对静止截图的处理<br> ·添加Tracker用于测量<br> ·添加Label用于信息提示<br> ·添加ColorAction用于对静止截图的处理<br>4. 版本变更:<br> 版本升级为1.03<br><br>20080616 2nd<br>1. Bug修正:<br> ·修正暂停监控时调整窗口大小,显示图像错乱的Bug<br>2. 功能添加:<br> ·添加设定背景色属性background.color<br>3. 核心调整:<br> ·去掉canvas,直接将采样图片放于container上,便于以后进一步在container上添加组件及操作<br>4. 版本变更:<br> ·版本升级为1.02<br><br>20080616<br>1. Bug修正:<br> ·暂未修正无法通过修改配置文件切换语言的Bug<br>2. 功能添加:<br> ·添加使用手册英文版v1.0<br> ·如需软件显示语言自动随系统语言切换,只需将System.properties中“locale”属性置空即可<br> ·调整缩放范围,使其既可放大屏幕也可缩小屏幕<br>3. 核心调整:<br> ·添加SWT/JFace的jar包到工程lib目录下<br> ·BasicWindow添加对鼠标移动点击的事件监听,以实现组件可用鼠标拖拽功能<br> ·BasicWindow添加在屏幕中央显示/随鼠标位置显示方法<br> ·更改屏幕采样并缩放的核心算法,使其缩放质量可以调整,支持缩小屏幕,且采样速度更快<br>4. 版本变更:<br> ·版本升级为1.0.1<br>5. 待做事项:<br> ·使用手册英文版<br> ·采样图片截取:只截取可见部分<br> ·对基类添加:随鼠标拖动功能,自动在屏幕中央显示功能,自动随鼠标显示功能<br> ·打包后无法通过修改配置文件切换语言(打包之前可以)<br> ·整理需要到的jar包,从eclipse中提取出来放到lib目录下<br> ·设置滚轮放大缩小可以开启/取消<br><br>20080615<br>1. Bug修正:<br> ·解决内存溢出Bug<br> ·解决字符串乱码Bug<br> `解决拖拽位置不正常Bug<br>2. 功能添加:<br> ·添加SystemPropertiesReader类,用于解析系统配置文件system.properties<br> ·完成软件的国际化,可根据需要切换英文/中文(暂时只能在启动前配置)<br> ·添加快捷键和部分图标<br> ·实现关闭到系统托盘效果<br>3. JZoomer v1.0 发布<br><br>20080614<br>1. 重新设计框架,提高其重用性<br>2. 实现功能:<br> ·字符串国际化<br> ·系统文件可编辑<br> ·系统托盘显示<br> ·支持滚轮缩放功能<br> ·控件拖拽功能<br> <br>20071227<br>1. JExplorer实现,初步了解JFace框架的设计思想,了解Action的使用方法<br><br>20070730<br>1. ColorPicker实现,其中含有部分放大镜功能,但有内存溢出Bug

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值