在eclipse的plugins目录下,到文件lipse.swt.win32.win32.x86_3.2.1.v3235.jar,文件名中中3.2.1是eclipse的版本号,v3235是SWT的序列号,不同的eclipse版本这两个数字也不同。在DOS状态下,用jar命令将该文件解压,命令格式如下:
jar lipse.swt.win32.win32.x86_3.2.1.v3235.jar
该命令将指定的文件lipse.swt.win32.win32.x86_3.2.1.v3235.jar解压到当前目录下。解压后得到四个DLL文件:swt-win32-3235.dll,swt-awt-win32-3235.dll,swt-gdip-win32-3235.dll和swt-wgl-win32-3235.dll。这四个文件就是SWT的原生库文件。原生库文件为SWT通过JNI访问windows本地API提供了接口,为使Java程序在启动时能够访问这些文件,可以通过以下方法进行设置:
方法一:将这四个DLL文件复制到jre的bin目录下。
方法二:设置环境变量,在PATH中加入这几个dll文件所在的目录。
方法三:在eclipse的Java项目中导入原生库文件。操作方法是:
在eclipse的包资源管理器中,右单击项目名→导入→常规→文件系统→下一步→浏览→选择DLL文件所在目录→确定→勾选DLL文件→完成。
导入SWT的原生库文件后,还要在eclipse的Java项目中配置构建路径,添加外部JAR,将文件lipse.swt.win32.win32.x86_3.2.1.v3235.jar加入到项目中,操作方法是:
eclipse导入整个项目在eclipse的包资源管理器中,右单击项目名→构建路径→配置构建路径→库(L)→添加外部JAR→在eclipse的plugins文件夹中到该jar文件→打开→确定。
例4.1 在Java应用程序中使用SWT的组件。
操作步骤:
① 新建一个Java项目,项目名为:sample4_1。
② 采用方法三在项目中导入原生库文件。
③ 配置构建路径,将lipse.swt.win32.win32.x86_3.2.1.v3235.jar加入到项目中。eclipse包资源管理器可以看到导入的原生库文件和引入的jar文件。
④ 在项目中新建一个类,文件名为HelloSWT.java。
⑤ 在类文件中写入代码。
HelloSWT.java文件内容如下:
package edu.ch4;
lipse.swt.SWT;
lipse.swt.widgets.Display;
lipse.swt.widgets.Text;
lipse.swt.widgets.Shell;
aphics.*;
class HelloSWT {
public static void main(String[] args) {
Display display=new Display();//创建一个display对象。
Shell shell=new Shell(display);//shell是程序的主窗体
shell.setLayout(null); //设置shell的布局方式
Text hello=new Text(shell,SWT.MULTI); //声明一个可以显示多行信息的文本框
shell.setText("Java应用程序"); //设置主窗体的标题
shell.setSize(200,100); //设置主窗体的大小
Color color=new Current(),255,255,255);//声明颜对象
shel
l.setBackground(color); //设置窗体的背景颜
hello.setText("Hello, SWT World!\n\n你好,SWT世界!");//设置文本框信息
hello.pack(); //自动调整文本框的大小
//shell.pack(); //自动调整主窗体的大小
shell.open(); //打开主窗体
while(!shell.isDisposed()){ //如果主窗体没有关闭则一直循环
if(!adAndDispatch()){ //如果display不忙
display.sleep(); //休眠
}
}
display.dispose(); //销毁display
}
}
在包资源管理器中,右单击文件名HelloSWT.java→运行方式→Java应用程序。该窗体具有典型的Windows风格。
分析本例的源代码,可以看到,创建一个典型的SWT应用程序需要以下步骤:
①创建一个Display
②创建一个或多个Shell
③设置Shell的布局
④创建Shell中的组件
⑤用open()方法打开Shell窗体
⑥写一个事件转发循环
⑦销毁display
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论