SWT学习(一)

1.下载swt: 
http://www.eclipse.org/swt/ 
在Release栏下载目标平台所需要的zip包,解压到某个目录。 
Windows: 
http://download.eclipse.org/eclipse/downloads/drops/R-3.6.2-201102101200/download.php?dropFile=swt-3.6.2-win32-win32-x86.zip 
Linux: 
http://download.eclipse.org/eclipse/downloads/drops/R-3.6.2-201102101200/download.php?dropFile=swt-3.6.2-gtk-linux-x86.zip 

2.将swt导入到workspace中作为一个project,供其余的project引用。 
Import-->Existing Projects into Workspace 

3.Hello World 
3.1Swt基础概念: 
3.1.1所有的内容都要通过Display对象来输出,一般一个程序只有一个Display对象。 
3.1.2窗口被称为Shell 
3.2创建工程,并引用Swt工程 
New-->Java Project 
在新创建的工程上点右键,选Properties,修改Java Build Path: 
选项卡选择Projects-->Add,勾选刚导入的swt工程,此时要保证此swt工程是打开状态的。 
勾选后就可以使用swt包中的类了。 
3.3创建HelloWorld类: 
New-->Class 
输入类名,并勾选创建main函数。 
3.4创建Display和Shell 
Display display = new Display(); 
Shell shell = new Shell(display) 
3.5设置shell标题栏文本 
shell.setText("Hello world!"); 
3.6显示窗口 
shell.open() 
试试执行一下,屏幕上一个窗口一闪而过,什么都没看清,这是因为shell.open执行完毕后程序退出了,窗口自然消失了。 
3.7在shell.open()后加个死循环等待看看 
for(;;) { 
try { 
Thread.sleep(1000); 
} catch (InterruptedException e) { 


再执行一下,可以看到一个窗口出现,但是什么事件都不响应。 
3.8不响应事件是因为循环中没有处理事件,将循环修改一下,改成调用Display类的事件读取分发函数,则就能响应事件了。 
while (!shell.isDisposed()) { 
     if (!display.readAndDispatch()) { 
       display.sleep(); 
     } 

3.9当程序执行完毕时回收资源。
display.dispose(); 
在swt中有两个原则: 
3.9.1谁创建谁dispose,就好像内存分配回收一样,display是被创建的,所以要被dispose。shell在关闭窗口时已经dispose了,所以不必再dispose。 
3.9.2父组件dispose时会dispose所有子组件。 

完整的代码: 
Java代码   收藏代码
  1. import org.eclipse.swt.widgets.Display;  
  2. import org.eclipse.swt.widgets.Shell;  
  3.   
  4.   
  5. public class HelloWorld {  
  6.     public static void main(String[] args) {  
  7.         Display display = new Display();  
  8.         Shell shell = new Shell(display);  
  9.           
  10.         shell.setText("Hello world!");  
  11.           
  12.         shell.open();  
  13.           
  14.         while (!shell.isDisposed()) {  
  15.           if (!display.readAndDispatch()) {  
  16.             display.sleep();  
  17.           }  
  18.         }  
  19.           
  20.         display.dispose();  
  21.     }  
  22. }  


4.导出可执行的jar 
Project -> right click -> export -> JAVA -> Runnable JAR file 选择要输出的project和保存位置就可以得到可运行的jar文件了。 
不过电脑的jar文件一般都与压缩文件关联了,点击就被解压缩了,所以要修改打开方式: 
http://blog.csdn.net/zqiang_55/article/details/6908660 

首先说说在 win7  下 
1、选择默认程序:右击jar包,打开方式->选择默认程序->浏览,选中jre下bin文件中javaw.exe(比如我的javaw.exe在D:\Program Files\Java\jre6\bin下)。 
2、编辑注册表:HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command,修改数据数值为"D:\Program Files\Java\jdk1.6.0_21\jre\bin\javaw.exe" -jar "%1"(只要在原来的数值下添加-jar即可)。 
大功告成,jar文件就可以直接运行了。 
改成下面会更好: 
将键值改为"C:\Program Files\Java\jre6\bin\javaw.exe" -jar "%1" %* 
原理:就是运行 
javaw -jar 【jar文件】 【参数信息】 
其中【jar文件】 【参数信息】分别对应%1 %* 
%1加双引号是防止路径中有空白 

其次是在 xp 下 
1 打开我的电脑 -> 工具 -> 文件夹选项 
2 在 文件夹选项 中的选项卡中选择 文件类型 --> 单击 新建 按钮  -->输入扩展名 jar (注意此处没有 “ . ” ) 
3 选择 新建的那个JAR文件  ---> 点击 高级 
4 单击 新建 按钮 --> 将操作名 命名为 open    执行操作的应用程序选择 javaw 所在的 位置 C:\Program Files\Java\jdk1.6.0_10\jre\bin\javaw 
5  注意此处的javaw 为 jre\bin  下的javaw         C:\Program Files\Java 为我安装的 java目录,根据自己的安装路径选择 
6  单击确定 然后再 编辑 此时可以看到 执行程序变为  "C:\Program Files\Java\jdk1.6.0_10\jre\bin\javaw" %1 
7 将其改为  "C:\Program Files\Java\jdk1.6.0_10\jre\bin\javaw" -jar %1 单击确定就 ok 了 


PS:为了方便布局界面,可以安装WindowBuilder插件,可以在此页面找到:http://www.eclipse.org/windowbuilder/download.php 
或者直接使用:http://dl.google.com/eclipse/inst/d2wbpro/latest/3.7 
因为是google的网站,你知道的,不是那么稳定,自己想办法了。 
安装WindowBuilder Engine以及SWT Designer 
安装以后就可以:new project -> windowBuilder -> SWT designer -> swt/jface java project 新建windowbuilder项目了。 
如果要添加一个界面相关的类,不要直接添加class,而是add other->window builder->SWT designer->SWT里面添加需要的类。 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怀想天空2010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值