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。

29e3900102c87e151c95832a.jpg


图3 新建插件对话框


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

5c6b4b8bb0d1a901c9fc7a2b.jpg


图4 新建项目


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

88a2853e6ff623e9838b1335.jpg


图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

 
  
public class HelloWorldSwt { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(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所示。

58902ccebf16c52ab700c837.jpg


图6 运行SWT程序


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

163ed2f8668b411cd8f9fd31.jpg


图7 SWT“Hello world”程序


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

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

JFace程序

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

“Hello world”JFace程序

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

 
  
public class HelloWorldJFace extends ApplicationWindow { public HelloWorldJFace() { super( null ); } protected Control createContents(Composite parent) { getShell().setText( " hello world! Window " ); parent.setSize( 400 , 250 ); return parent; } public static void main(String[] args) { HelloWorldJFace helloWorldApp = new HelloWorldJFace(); helloWorldApp.setBlockOnOpen( true ); helloWorldApp.open(); Display.getCurrent().dispose(); } }

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

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

转载于:https://www.cnblogs.com/jadmin/archive/2008/05/04/2206155.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作者:talent_marquis邮件:talent_marquis@163.com################19/12/2007更新###################新添加/重写的功能:1. 已实现简单的剪切/复制/粘贴功能(尚不能和外界程序交互)2. 添加创建新文件夹功能3. 添加选择全部/文件/文件夹功能4. 增加对创建新文件夹,重命名,删除,粘贴操作的异常处理5. FileUtil中增加getFileCentent方法,用于读取文本文件内容6. 重写AboutDialog7. 重写ExitAction8. 重写FileUtil中doPaste()方法,显著提高速度,修正拷贝文件时会导致文件不正常的严重Bug9. 修正其他部分已发现Bug10. 版本号升级为0.5尚未实现的功能:1. 与外界程序的交互2. 拖拽3. 国际化4. 输入文件名时对特殊字符的验证################17/12/2007更新###################新添加/重写的功能:1. 排序功能已加入菜单栏和弹出菜单2. 重写图标载入方法,已经可以实现图标动态载入和识别3. 重写TableViewer中tableColumn生成载入方法,已经可以实现tablecolumn的半动态载入和识别4. 实现动态识别文件类型5. 进行删除操作时,对删除的文件进行识别6. 更新添加了一些FileUtil中的方法,并且把这个类的注释写的差不多了 - -注意:1. icons文件夹内的文件结构有变化。2. jar文件没有更新,如果需要打好包的jar文件请等我把功能都实现后的那个版本 - -尚未实现的功能:1. 剪切/复制/粘贴功能2. 拖拽功能3. 详尽的注释4. 异常处理5. 国际化################14/12/2007更新###################已经实现的基本功能:1. 树形浏览结构2. 双击 运行程序/进入下一级菜单目录3. 返回上一级菜单4. 重命名5. 刷新6. 删除7. 按文件名/大小/类型/最后修改日期排序8. 对当前文件夹进行过滤操作9. 对当前文件夹的简要统计尚未实现的功能:1. 剪切/复制/粘贴2. 拖拽3. 弹出菜单中的排序选项4. 动态识别文件类型5. 详尽的注释已知的Bug:1. TreeViewer进行目录切换时,TableViewer窗体有时会变成空白2. 有特殊字符的过滤操作将导致异常3. 重命名没有考虑特殊字符4. 有大量文件(几百个以上)的目录会打开的很慢5. 文件删除失败时没有提示######新添加/重写的功能:1. 已实现简单的剪切/复制/粘贴功能(尚不能和外界程序交互)2. 添加创建新文件夹功能3. 添加选择全部/文件/文件夹功能4. 重写AboutDialog5. 增加对创建新文件夹,重命名,删除,粘贴操作的异常处理6. 重写ExitAction7. 修正部分已发现Bug尚未实现的功能:1. 与外界程序的交互2. 拖拽3. 国际化4. 输入文件名时对特殊字符的验证
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值