众所周知
![](/icons/31820dou.gif)
![](/icons/31820dou.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820yi.gif)
![](/icons/31820de.gif)
![](/icons/31820de.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820dou.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou2.gif)
用于 Java
![](/icons/31820de.gif)
让我们从内存占用问题开始
![](/icons/31820dou2.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820de.gif)
![](/icons/31820dou.gif)
![](/icons/31820yinwei.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820yi.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820yi.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820yi.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820dou2.gif)
![](/icons/31820yi.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820de.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820de.gif)
![](/icons/31820de.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820dou2.gif)
标准窗口构件工具箱
这很棒
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820dou2.gif)
![](/icons/31820yi.gif)
![](/icons/31820de.gif)
![](/icons/31820yi.gif)
![](/icons/31820dou2.gif)
![](/icons/31820de.gif)
![](/icons/31820de.gif)
![](/icons/31820dou.gif)
![](/icons/31820yi.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
SWT 试图弥补 AWT 和 Swing
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820yinwei.gif)
![](/icons/31820if.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou2.gif)
Swing 走向了另
![](/icons/31820yi.gif)
![](/icons/31820dou2.gif)
![](/icons/31820yi.gif)
![](/icons/31820de.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820yinwei.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
SWT 试图弥合这两个 GUI 工具箱的间
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou2.gif)
![](/icons/31820de.gif)
![](/icons/31820yi.gif)
![](/icons/31820dou2.gif)
![](/icons/31820yinwei.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820if.gif)
![](/icons/31820dou.gif)
![](/icons/31820if.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820de.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820dou.gif)
![](/icons/31820yinwei.gif)
![](/icons/31820dou2.gif)
设置开发环境
因此
![](/icons/31820dou.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820dou.gif)
![](/icons/31820yi.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820de.gif)
![](/icons/31820yi.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820yinwei.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou2.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820yi.gif)
![](/icons/31820yi.gif)
![](/icons/31820de.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou.gif)
![](/icons/31820yi.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou2.gif)
开始编译
设置开发环境后
![](/icons/31820dou.gif)
![](/icons/31820dou2.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820de.gif)
gcj -c MyClass.java -o MyClass.o
大约有 30 个 SWT 源文件使用 Java 本机接口(Java Native Interface (JNI))
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
gcj -fjni -c MyJNIClass.java -o MyJNIClass.o
最后
![](/icons/31820dou.gif)
gcj -shared -o swt.so MyClass.o MyJNIClass.o ...
构建 SWT
在本文中
![](/icons/31820dou.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou2.gif)
![](/icons/31820de.gif)
![](/icons/31820de.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820yi.gif)
![](/icons/31820dou2.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
使用下载源代码中包含
![](/icons/31820de.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820yinwei.gif)
![](/icons/31820yi.gif)
![](/icons/31820de.gif)
![](/icons/31820cuowu.gif)
![](/icons/31820de.gif)
![](/icons/31820dou.gif)
![](/icons/31820int.gif)
![](/icons/31820yi.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820dou2.gif)
![](/icons/31820de.gif)
![](/icons/31820dou.gif)
![](/icons/31820cuowu.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820diaoyong.gif)
![](/icons/31820dou2.gif)
在清单 1 中显示
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
要运行构建
![](/icons/31820dou.gif)
安装 Ant(请参阅 参考资料以获取有关 Ant
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
下载本文
![](/icons/31820de.gif)
![](/icons/31820dou.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820de.gif)
![](/icons/31820dou.gif)
![](/icons/31820yi.gif)
![](/icons/31820dou2.gif)
导航至 SWT 目录
![](/icons/31820dou.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou2.gif)
![](/icons/31820yi.gif)
![](/icons/31820dou.gif)
![](/icons/31820install.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
注:如果不想使用 Ant 构建文件
![](/icons/31820dou.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou2.gif)
清单 1. Ant 构建文件
<project name="BuildEclipse" default="cleanup">
<!--
The following properties can be overridden at the command-line.
e.g. ant -Declipse_
_dir=/usr/local/eclipse
-->
<property name="eclipse_
_dir" value="/usr/local/eclipse"/>
<property name="temp_dir" value="build_temp"/>
<property name="shared_object_name" value="swt.so"/>
<target name="init">
<mkdir dir="${temp_dir}"/>
</target>
<target name="unpack" depends="init">
<unzip src="${eclipse_
_dir}/plugins/org.eclipse.swt/swtsrc.zip"
dest="${temp_dir}"/>
<unjar src="${eclipse_
_dir}/plugins/org.eclipse.swt/swt.jar"
dest="${temp_dir}"/>
</target>
<target name="patch" depends="unpack">
<patch patchfile="TabFolder.patch"
originalfile="${temp_dir}/org/eclipse/swt/widgets/TabFolder.java"/>
<patch patchfile="Widget.patch"
originalfile="${temp_dir}/org/eclipse/swt/widgets/Widget.java"/>
<patch patchfile="TreeEditor.patch"/>
<move file="TreeEditor.java" todir="${temp_dir}/org/eclipse/swt/custom"/>
</target>
<target name="make" depends="patch">
<execon executable="touch">
<file
dir="${temp_dir}"
s="**/*.java" excludes="**/*.
"/>
</execon>
<execon executable="touch">
<file
dir="${temp_dir}"
s="**/*.
" excludes="**/*.java"/>
</execon>
<copy file="Makefile" todir="${temp_dir}"/>
<exec executable="make" dir="${temp_dir}">
<arg line="-f Makefile"/>
</exec>
</target>
<target name="cleanup" depends="make">
<move file="${temp_dir}/${shared_object_name}" todir="."/>
<delete dir="${temp_dir}"/>
</target>
</project>
创建应用
![](/icons/31820chengxu.gif)
既然您已经将 SWT 构建到共享对象中
![](/icons/31820dou.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820dou2.gif)
![](/icons/31820de.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820yi.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
清单 2.“Hello, World”样本应用
![](/icons/31820chengxu.gif)
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowLayout;
public
Hello {
public
void
(String
args) {
Display display =
Display
;
final Shell shell =
Shell(display);
RowLayout layout =
RowLayout
;
layout.just
y = true;
layout.pack = true;
shell.
Layout(layout);
shell.
Text("Hello, World!");
Label label =
Label(shell, SWT.CENTER);
label.
Text("Hello, World!");
shell.pack
;
shell.open
;
while (!shell.isDisposed
) {
(!display.readAndDispatch
) display.sleep
;
}
display.dispose ![](/icons/31820kh.gif)
要编译这个应用
![](/icons/31820chengxu.gif)
![](/icons/31820dou.gif)
将 SWT 共享对象(swt.so)复制到 Hello World 目录中
![](/icons/31820dou.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
gcj -CLASSPATH=/usr/local/eclipse/plugins/org.eclipse.swt/swt.jar
-c Hello.java -o Hello.o
gcj -
=Hello -o Hello Hello.o swt.so
接下来
![](/icons/31820dou.gif)
export LD_LIBRARY_PATH=
.:/usr/local/eclipse:/usr/local/eclipse/plugins/org.eclipse.swt/ws/mot![](/icons/31820if.gif)
输入 ./Hello
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820chengxu.gif)
注:本文
![](/icons/31820de.gif)
![](/icons/31820yi.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
展望
对 Windows 应用
![](/icons/31820chengxu.gif)
![](/icons/31820de.gif)
![](/icons/31820de.gif)
![](/icons/31820dou.gif)
![](/icons/31820if.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820de.gif)
![](/icons/31820if.gif)
![](/icons/31820dou.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820int.gif)
![](/icons/31820yi.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
结束语
众所周知
![](/icons/31820dou.gif)
![](/icons/31820yi.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820de.gif)
![](/icons/31820dou.gif)
![](/icons/31820de.gif)
![](/icons/31820dou.gif)
![](/icons/31820yi.gif)
![](/icons/31820de.gif)
![](/icons/31820dou2.gif)
![](/icons/31820dou.gif)
![](/icons/31820chengxu.gif)
![](/icons/31820dou2.gif)
最新评论