系列文章規劃
- 搭建開發環境(本文)
- SWT 基礎控件介紹
- JFace 入門:Viewer 與 Provider 模式
- 事件模型與監聽器機制
- 綜合實例:構建圖形化應用
預期讀者:了解 Eclipse IDE 基礎操作、具備 Java 基礎、想快速上手 SWT/JFace 桌面開發的開發者。
環境搭建三步走
第一步:創建 Java Project
File → New → Java Project,任意項目名(如 SWTDemo)。
第二步:導入核心 JAR 包
從 Eclipse 安裝目錄 plugins/ 複製以下 4 個 JAR 到項目 lib/ 並加入 Build Path:
| JAR 包 | 版本示例 (Eclipse 3.1M6) | 作用 |
| org.eclipse.swt_3.x.x.jar | 3.1.0 | SWT 核心 UI 工具包 |
| org.eclipse.jface_3.x.x.jar | 3.1.0 | JFace 視圖/數據綁定框架 |
| org.eclipse.core.runtime_3.x.x.jar | 3.1.0 | 運行時核心(擴展點、注冊表、適配器) |
| org.eclipse.ui.workbench_3.x.x.jar | 3.1.0 | Workbench UI 基礎設施 |

第三步:配置本地庫 (SWt JNI DLL) —— 關鍵步驟
SWT 通過 JNI 調用原生 OS GUI API,需加載平台特定 DLL:
- 找到
org.eclipse.swt.win32_3.x.x.jar (Windows 32位)
- 解壓,取出
os/win32/x86/ 下所有 .dll 文件
- 三種配置方式任選一:
- 最簡單:複製 DLL 到
JRE/bin/ 目錄
- 環境變量:將 DLL 目錄加入
PATH
- 啟動參數:Run Configurations → Arguments → VM Arguments 添加
-Djava.library.path=path/to/dll

Hello World 完整代碼
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.SWT;
public class HelloWorld {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("SWT Hello World");
shell.setLayout(new FillLayout());
shell.setSize(300, 200);
Label label = new Label(shell, SWT.CENTER);
label.setText("Hello, SWT/JFace!");
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
}
運行驗證
- 右鍵類 → Run As → Java Application
- 彈出原生風格窗口,顯示居中標籤,關閉窗口程序正常退出
常見問題排查
| 現象 | 原因 | 解決 |
| UnsatisfiedLinkError: swt-win32-xxxx | DLL 未在 java.library.path | 按第三步配置 DLL 路徑 |
| ClassNotFoundException: org.eclipse.swt.widgets.Display | JAR 未加入 Build Path | 檢查 Build Path → Libraries |
| 64位 JDK 報錯 | 32位 DLL 與 64位 JDK 不匹配 | 下載對應 64位 SWT JAR 或使用 32位 JDK |
| Linux/Mac 無法運行 | 需平台專用 SWT JAR | 從 Eclipse 官網下載對應平台版本 |
現代化構建建議
- Maven/Gradle 依賴:
org.eclipse.platform:org.eclipse.swt:4.30 (自動解析平台分類器)、org.eclipse.platform:org.eclipse.jface:4.30
- 模塊化 (JPMS):SWT 4.20+ 提供
module-info.java,需 requires org.eclipse.swt;
- RCP 產品化:使用
Tycho 構建、p2 更新站點、原生安裝包生成
下一集預告
深入 SWT 基礎控件:Shell/Composite/Label/Text/Button/Combo/Table/Tree 佈局與事件綁定,掌握原生桌面 UI 構建塊。
- 上一篇文章: 重構實戰:用狀態模式消除 if-else 條件泥潭
- 下一篇文章: 手機遊戲開發:拋物線軌跡數學建模與 Canvas 繪製實戰
Copyright ©
程式碼之家 All Rights Reserved