前段时间用
eclipse
的插件
SWT
做了一个简单的应用程序界面,感觉没有
VC
做界面方便和强大,还不时的和
AWT
冲突,也可能是刚学,没有体会
SWT
的优点,我把自己的掌握的写出来,大家一起交流哈。
好了,现在言归正传,开始哈。
1.
安装
Designer_v5.0.0_for_Eclipse3.0
根据
eclipse
版本的不同,下载不同的
SWT-Desiger.
下载地址:
http://www.swt-designer.com/
安装方法和所有的
eclipse
插件一样,将
features, plugins
下的文件放到
eclipse
相应的文件夹中就好了,重启
eclipse, OK .
2.
破解
Designer_v5.0.0_for_Eclipse3.0
eclipse->windows->preferences->Designer –Registration and Activation ->SWT Designer Professional Paid ->next->
输入相关的信息
->next
在
serial Number
和
Activation Key
输入注册码。注册机的下载地址:
http://www.blogjava.net/Files/zjuedsion/解压并且修改好的破解工具.rar
next
就
OK
了。
3.
新建一个
Test
工程
File- >project-> Designer SWT/JFace Java Project
建好工程后要导入
SWT
的原生库,要不然,项目运行时会抱错:
Java.lang.UnsatifiledLinkError. no swt-awt-win32-3064.dll in java.Labrary.path
我这里是
swt-awt-win32-3064.dll
,可能版本会有点不一样。导入的方法:选择项目名,点右键,
Import->File System
如下图
一般
swt-awt-win32-3064.dll
在
x:\eclipse\plugins\org.eclipse.swt.win32_3.0.2\os\win32\x86
下选择好后
Finish
就好了
4.
建
SWT Application
File->new ->others->Designer->SWT->Application Window
package : com.swtdesign
name: Myapp
create contents in : public static main() method
如下图
点
Finish
就好了
看代码
package com.swtdesigner; //
包名
import org.eclipse.swt.widgets.Display;//
程序所用到的类都会用
import
标记在这里,
import org.eclipse.swt.widgets.Shell; //import
的快捷键
Ctrl+Shift+O
public class Test{ //
一个标准的
Java
类
HelloWorld
public static void main(String[] args) {
//display
负责管理事件循环和控制
UI
线程和其他线程之间的通讯。
final Display display = Display.getDefault();
final Shell shell = new Shell(); // shell
是程序的主窗口
shell.setSize(327, 253); //
设置主窗口的大小
shell.setText("SWT Application"); //
设置主窗口的标题
shell.layout(); //shell
应用界面布置
shell.open(); //
打开
shell
主窗口
while (!shell.isDisposed()) { //
如果主窗口没有关闭,则一直循环
if (!display.readAndDispatch()) //
如果
display
不忙
display.sleep(); //display
休眠
}
}
}
从这个代码可以看到,创建一个典型的SWT应用程序需要以下步骤:
l
创建一个
Display
l
创建一个或多个
Shell
l
设置
Shell
的布局
l
创建
Shell
中的的组件(注:本例还没有加入组件,只是一个空窗口)
l
用
open()
方法打开
Shell
窗口
l
写一个事件转发循环
l
销毁
display
接下来我们在
应用程序上加一个
Button
并制作他的
单击事件。事件的内容是调出一个提示窗口,和一个文本框,接受外面的输入。
如下图在,切换到
design
模式,加一个
button
,在左边的菜单里选一个
button
,然后直接点在面板上,不是拖过去。
双击
button
为其添加
selection
事件,也可以点右键-
>implement->selection- >widgetSelected
|
然后切换到
source
模式,看到增加了以下代码
final Button button = new Button(shell, SWT.NONE);
//
这就是增加的鼠标单击事件代码,以匿名内部类的方式写的
button.addSelectionListener(new SelectionAdapter() {
//
要实现事件,必须实现
widgetSelected
方法
public void widgetSelected(SelectionEvent e) {
//
信息提示对话框
MessageDialog.openInformation(null,"hello world","hello");
}
});
我们可以将匿名内部类,改成不是匿名的
将原来的事件代码改为:
button.addSelectionListener(new addButtonSelected());
同时加
addButtonSelected
内部类
//
加
static
使其可以直接
new
,继承
SelectionAdapter
,直接写方法就可以了
public static class addButtonSelected extends SelectionAdapter
{
public void widgetSelected(SelectionEvent e) {
MessageDialog.openInformation(null,"hello world","hello");
}
}
好了这样就实现了加一个
button
,并单击相应一个事件。够简单了吧。下面加一个文本框
同理切换到
Design
模式下加一个名为
input_Text
的文本框,在文本框左边加个
Clable
的标签“输入”,再加一个
button(input_button)
,点确定后接受输入。然后加一组输出现实,
output_Text.
,
output_button
如下图
然后加响应代码;
//
把文本框的内容和一个
String
变量绑定
private static String output_string=null;
//
输入输出事件
input_button.addSelectionListener(new inputText());
output_button.addSelectionListener(new outputText());
//
输入事件
public static class inputText extends SelectionAdapter
{
public void widgetSelected(SelectionEvent e)
{
output_string=input_text.getText();
System.out.println(output_string);
}
}
//
输入事件
public static class outputText extends SelectionAdapter
{
public void widgetSelected(SelectionEvent e)
{
output_text.setText(output_string);
System.out.println(output_string);
}
}
最后的效果如下图
OK!
结束。如有问题,请联系
edsionchen_zju@hotmal.com