说说SWT(一)——SWT简介

源代码如下:

package swt.examples;

import org.eclipse.swt.SWT;

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.Label;

import org.eclipse.swt.widgets.Shell;

public class HelloWorld{

public static void main(String [] args) {

Display display = new Display();

Shell shell = new Shell(display);

shell.setLayout(new FillLayout());

Label label = new Label(shell,SWT.NONE);

label.setText("HelloWorld");

shell.open();

while (!shell.isDisposed()) {

if (!display.readAndDispatch())

display.sleep();

}

display.dispose();

}

}

Copy,将swt.jar加入(我下载的是在wswin32下,还有个目录oswin32x86文件夹先不用管),运行,出现错误java.lang.UnsatisfiedLinkError: no swt-win32-3063 in java.library.path。原来还要加运行参数-Djava.library.path=D:backuptools eclipsepluginsorg.eclipse.swt.win32_3.0.1oswin32x86(看到另一个文件夹的作用了吧,SWT要到这里去寻找dll控件)。现在在运行,一切ok了出现一个带有HelloWorld的窗口,和windows的标准窗口一样。

SWT工作原理

为什么SWT的窗口和Windows的窗口一样呢?这个就要从SWT的工作原理说起了SWT直接使用操作系统提供的现成的本地图形接口,于是具备本地化的Look & Feel。但是它是怎么做到这一点的呢,当然是通过JNI。SWT所做的无非就是把Win32的API简单的包装了一下,我们在SWT这一层调用的方法、传递的参数被原封不动的代理到了Win32层。这就是SWT的核心思想。SWT有一个很重要的设计原则,那就是,SWT的API一对一的封装OS的API,完全忠实于操作系统的API实现的行为,如果有bug,那也是OS的bug,它不会尝试去“纠正”操作系统,因为那样会潜在的破坏本地化的一些行为。忠实于OS也使得调用者不必但心自己的SWT程序会跟OS的本地GUI有不一致的地方,如有必要直接参考MSDN即可。SWT其实就是这样一个thin wrapper,我们通过它可以方便的访问Win32的图形API,为我们的应用程序提供native的Look & Feel。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值