前段时间用 eclipse 的插件 SWT 做了一个简单的应用程序界面,感觉没有 VC 做界面方便和强大,还不时的和 AWT 冲突,也可能是刚学,没有体会 SWT 的优点,我把自己的掌握的写出来,大家一起交流哈。
好了,现在言归正传,开始哈。
1. 安装 Designer_v 5.0.0 _for_Eclipse3.0
根据 eclipse 版本的不同,下载不同的 SWT-Desiger. 下载地址: http://www.swt-designer.com/
安装方法和所有的 eclipse 插件一样,将 features, plugins 下的文件放到 eclipse 相应的文件夹中就好了,重启 eclipse, OK .
2. 破解 Designer_v 5.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- |
然后切换到 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! 结束。如有问题,请联系 [email protected]