站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Eclipse 专题使用Eclipse进行SWT编程(2)

使用Eclipse进行SWT编程(2)

摘要: 使用Eclipse进行SWT编程(2)

5. Eclipse外运行SWT应用程序

要在不使用Eclipse的环境下运行SWT应用程序,swt.jar库必须在classpath中,并且java.library.path环境变量必须正确设置。根据主机平台,必须有合适的本地库存在。对于Windows平台,你可以根据如下来完成本地库的配置:

  1. 把swt.dll放在和程序相同的文件夹下。
  2. 把swt.dll放在JAVA_HOME\bin\文件夹下。
  3. 把swt.dll放在c:\windows\system32文件夹下。

javac -classpath c:\swt\swt.jar HelloWorld.java
Java -classpath c:\swt\swt.jar;. -Djava.library.path=c:\swt HelloWorld
java.library.path是JNI必需的环境变量。如果你没有设置这个环境变量。你的DLL 类是不能访问的。在这种情况下,应用程序不能正常的运行,并会抛出异常。

<table class="MsoNormalTable" style="WIDTH: 100%; mso-cellspacing: 1.5pt" cellpadding="0" width="100%" border="0"><tr style="mso-yfti-irow: 0"><td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 0.75pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 0.75pt; BACKGROUND: #eeeeee; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #d4d0c8; WIDTH: 11%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #d4d0c8" width="11%">

<formulas></formulas>

</td><td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 0.75pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 0.75pt; BACKGROUND: #eeeeee; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #d4d0c8; WIDTH: 86%; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #d4d0c8" width="86%">

SWT库

</td></tr><tr style="mso-yfti-irow: 1; mso-yfti-lastrow: yes"><td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 0.75pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 0.75pt; BACKGROUND: #eeeeee; PADDING-BOTTOM: 0.75pt; BORDER-LEFT: #d4d0c8; PADDING-TOP: 0.75pt; BORDER-BOTTOM: #d4d0c8" colspan="2">

Swt库存在于Eclipse的plug-in目录下。如果你想不下载整个Eclipse包而获得SWT库,你可以在http://www.eclipse.org/downloads目录下单独下载这个SWT库。

</td></tr></table>

6. SWT包(Packages

SWT主要由下列包组成。这些包的定义是从Eclipse的API文档上得到的。你可以在Eclipse的网站上获得整个API文档。
org.eclipse.swt: 包含了定义了SWT需要使用的常量和异常的类。这个包由三个类组成:SWT, SWTException和SWTError。SWT类可能是最受欢迎的类,因为它包含了SWT库所需要的常量如键盘、错误、颜色、布局、文本样式、按钮等常量。
org.eclipse.swt.widgets: 包含了大多数核心SWT窗口组件,包括支持的接口和类。
org.eclipse.swt.events: 定义了SWT组件使用的typed events, listeners和events。这个包有三组不同的类:Listener接口,Adapter类和Event类。
org.eclipse.swt.dnd: 包含了对SWT窗口组件拖放(drag-and-drop)支持的类。
org.eclipse.swt.layout: 包含了提供对SWT窗口组件自动安置和大小控制的类。
org.eclipse.swt.print: 包含了对SWT窗口组件提供打印支持的类。
org.eclipse.swt.graphics: 这个包提供了实现基本绘图操作需要的点,长方形、区域,颜色,光标,字体,图像上下文(GC)等的类和包含了显示图像代码和载入/保存他们的公有API的图像类。

7. 对话框

对话框的实现是本地的。也就是说,对话框像窗口组件一样是平台组件。SWT的Dialogs是从Dialog抽象类继承的。对话框不是窗口组件但是他可以容纳窗口组件。

2. Dialog类层次图.

SWT有不同类型的对话框。有些对话框具有特殊的属性。Dialog类可以如源代码 2中使用

<table class="MsoNormalTable" style="MARGIN: auto auto auto -15.4pt; WIDTH: 307.3pt; mso-cellspacing: 0cm; mso-padding-alt: 0cm 0cm 0cm 0cm" cellspacing="0" cellpadding="0" width="410" border="0"><tr style="mso-yfti-irow: 0"><td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 0cm; BORDER-TOP: #d4d0c8; PADDING-LEFT: 0cm; BACKGROUND: navy; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 307.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8" width="410">

源代码2. MessageBox例子

</td></tr><tr style="mso-yfti-irow: 1; mso-yfti-lastrow: yes"><td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 0cm; BORDER-TOP: #d4d0c8; PADDING-LEFT: 0cm; BACKGROUND: #eeeeee; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 307.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8" width="410">

MessageBox messageBox =

new MessageBox(shell, SWT.OK|SWT.CANCEL);

if (messageBox.open() == SWT.OK)

{

System.out.println("Ok is pressed.");

}

</td></tr></table>

每个对话框的open()方法返回不同的类型。例如, MessageBox对话框从open()方法返回int类型。因此,需要编写不同的条件来处理每一个对话框的返回值。

ColorDialog显示一个色彩选择调色板。它从return方法返回一个RGB对象。

DirectoryDialog使你可以选择一个目录。它从open()方法返回一个字符串。返回值就是选择的目录。当然,也可以设置额外的过滤器来过滤有些目录。

FontDialog使用户能够从系统所有的字体中选择一种字体。它从open()方法返回一个FontData对象。

FileDialog使用户能够选择一个文件。另外,可以设置扩展名过滤器,路径过滤器和文件名过滤器。对话框有如1所示的样式:

<table class="MsoNormalTable" style="BORDER-RIGHT: silver 1pt outset; BORDER-TOP: silver 1pt outset; MARGIN: auto auto auto -24.7pt; BORDER-LEFT: silver 1pt outset; WIDTH: 277.2pt; BORDER-BOTTOM: silver 1pt outset; mso-cellspacing: 0cm; mso-padding-alt: 0cm 0cm 0cm 0cm; mso-border-alt: outset silver .75pt" cellspacing="0" cellpadding="0" width="370" border="1"><tr style="mso-yfti-irow: 0"><td style="BORDER-RIGHT: black 1pt inset; PADDING-RIGHT: 0cm; BORDER-TOP: black 1pt inset; PADDING-LEFT: 0cm; BACKGROUND: navy; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt inset; WIDTH: 277.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt inset; mso-border-alt: inset black .75pt" width="370" colspan="2">

1. SWT对话框style bit常量

</td></tr><tr style="mso-yfti-irow: 1"><td style="BORDER-RIGHT: silver 1pt inset; PADDING-RIGHT: 0cm; BORDER-TOP: silver 1pt inset; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt inset; WIDTH: 95.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt inset; BACKGROUND-COLOR: transparent; mso-border-alt: inset silver .75pt" width="128">

SWT.OPEN

</td><td style="BORDER-RIGHT: silver 1pt inset; PADDING-RIGHT: 0cm; BORDER-TOP: silver 1pt inset; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt inset; WIDTH: 181.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt inset; BACKGROUND-COLOR: transparent; mso-border-alt: inset silver .75pt" width="242">

Shows Open button in the dialog

</td></tr><tr style="mso-yfti-irow: 2; mso-yfti-lastrow: yes"><td style="BORDER-RIGHT: silver 1pt inset; PADDING-RIGHT: 0cm; BORDER-TOP: silver 1pt inset; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt inset; WIDTH: 95.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt inset; BACKGROUND-COLOR: transparent; mso-border-alt: inset silver .75pt" width="128">

SWT.SAVE

</td><td style="BORDER-RIGHT: silver 1pt inset; PADDING-RIGHT: 0cm; BORDER-TOP: silver 1pt inset; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt inset; WIDTH: 181.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt inset; BACKGROUND-COLOR: transparent; mso-border-alt: inset silver .75pt" width="242">

Shows Save button in the dialog

</td></tr></table>

PrintDialog使用户在打印之前选择打印机。它从open()方法返回一个PrinterData对象。

MessageBox用于给用户回馈信息。你可以使用或(|)操作来联合不同的样式,如源代码3所示:

<table class="MsoNormalTable" style="WIDTH: 225pt; mso-cellspacing: 0cm; mso-padding-alt: 0cm 0cm 0cm 0cm" cellspacing="0" cellpadding="0" width="300" border="0"><tr style="mso-yfti-irow: 0"><td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 0cm; BORDER-TOP: #d4d0c8; PADDING-LEFT: 0cm; BACKGROUND: navy; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8">

源代码3. MessageBox例子

</td></tr><tr style="mso-yfti-irow: 1; mso-yfti-lastrow: yes"><td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 0cm; BORDER-TOP: #d4d0c8; PADDING-LEFT: 0cm; BACKGROUND: #eeeeee; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8">

MessageBox messageBox =

new MessageBox(shell,

SWT.OK|

SWT.CANCEL|

SWT.ICON_WARNING);

messageBox.setMessage("www.korayguclu.de");

messageBox.open();

</td></tr></table>

可用的按钮常量如下所列。使或操作可以完成不同按钮的联合。SWT框架按照style bits创建对话框。按钮常量有:SWT.ABORT, SWT.OK, SWT.CANCEL, SWT.RETRY, SWT.IGNORE,SWT.YES和SWT.NO。

2 显示了对话框可以使用的图标。

<table class="MsoNormalTable" style="BORDER-RIGHT: silver 1pt outset; BORDER-TOP: silver 1pt outset; BORDER-LEFT: silver 1pt outset; WIDTH: 225pt; BORDER-BOTTOM: silver 1pt outset; mso-cellspacing: 0cm; mso-padding-alt: 0cm 0cm 0cm 0cm; mso-border-alt: outset silver .75pt" cellspacing="0" cellpadding="0" width="300" border="1"><tr style="mso-yfti-irow: 0"><td style="BORDER-RIGHT: black 1pt inset; PADDING-RIGHT: 0cm; BORDER-TOP: black 1pt inset; PADDING-LEFT: 0cm; BACKGROUND: navy; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt inset; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt inset; mso-border-alt: inset black .75pt" colspan="2">

2. SWT图标style bit常量

</td></tr><tr style="mso-yfti-irow: 1"><td style="BORDER-RIGHT: silver 1pt inset; PADDING-RIGHT: 0cm; BORDER-TOP: silver 1pt inset; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt inset; WIDTH: 80%; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt inset; BACKGROUND-COLOR: transparent; mso-border-alt: inset silver .75pt" width="80%">

SWT.ICON_ERROR

</td><td style="BORDER-RIGHT: silver 1pt inset; PADDING-RIGHT: 0cm; BORDER-TOP: silver 1pt inset; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt inset; WIDTH: 18%; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt inset; BACKGROUND-COLOR: transparent; mso-border-alt: inset silver .75pt" width="18%">

<formulas></formulas>

</td></tr><tr style="mso-yfti-irow: 2"><td style="BORDER-RIGHT: silver 1pt inset; PADDING-RIGHT: 0cm; BORDER-TOP: silver 1pt inset; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt inset; WIDTH: 80%; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt inset; BACKGROUND-COLOR: transparent; mso-border-alt: inset silver .75pt" width="80%">

SWT.ICON_INFORMATION

</td><td style="BORDER-RIGHT: silver 1pt inset; PADDING-RIGHT: 0cm; BORDER-TOP: silver 1pt inset; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt inset; WIDTH: 18%; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt inset; BACKGROUND-COLOR: transparent; mso-border-alt: inset silver .75pt" width="18%">

</td></tr><tr style="mso-yfti-irow: 3"><td style="BORDER-RIGHT: silver 1pt inset; PADDING-RIGHT: 0cm; BORDER-TOP: silver 1pt inset; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt inset; WIDTH: 80%; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt inset; BACKGROUND-COLOR: transparent; mso-border-alt: inset silver .75pt" width="80%">

SWT.ICON_QUESTION

</td><td style="BORDER-RIGHT: silver 1pt inset; PADDING-RIGHT: 0cm; BORDER-TOP: silver 1pt inset; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt inset; WIDTH: 18%; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt inset; BACKGROUND-COLOR: transparent; mso-border-alt: inset silver .75pt" width="18%">

</td></tr><tr style="mso-yfti-irow: 4"><td style="BORDER-RIGHT: silver 1pt inset; PADDING-RIGHT: 0cm; BORDER-TOP: silver 1pt inset; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt inset; WIDTH: 80%; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt inset; BACKGROUND-COLOR: transparent; mso-border-alt: inset silver .75pt" width="80%">

SWT.ICON_WARNING

</td><td style="BORDER-RIGHT: silver 1pt inset; PADDING-RIGHT: 0cm; BORDER-TOP: silver 1pt inset; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt inset; WIDTH: 18%; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt inset; BACKGROUND-COLOR: transparent; mso-border-alt: inset silver .75pt" width="18%">

</td></tr><tr style="mso-yfti-irow: 5; mso-yfti-lastrow: yes"><td style="BORDER-RIGHT: silver 1pt inset; PADDING-RIGHT: 0cm; BORDER-TOP: silver 1pt inset; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt inset; WIDTH: 80%; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt inset; BACKGROUND-COLOR: transparent; mso-border-alt: inset silver .75pt" width="80%">

SWT.ICON_WORKING

</td><td style="BORDER-RIGHT: silver 1pt inset; PADDING-RIGHT: 0cm; BORDER-TOP: silver 1pt inset; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt inset; WIDTH: 18%; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt inset; BACKGROUND-COLOR: transparent; mso-border-alt: inset silver .75pt" width="18%">

</td></tr></table>



↑返回目录
前一篇: 使用Eclipse进行SWT编程(3)
后一篇: Eclipse插件合集