SWT (Standard Widget Toolkit) 是 IBM 開發的 Java GUI 庫,特點是Java API 驅動原生平台控件:代碼用 Java 寫,底層通過 JNI 調用系統原生 Widget(Windows 用 Win32,Linux 用 GTK,macOS 用 Cocoa)。兼具 Java 跨平台開發體驗與原生應用的外觀、性能、資源佔用優勢。
Add External JARs 選擇 swt.jar(如 plugins/org.eclipse.swt.win32_3.0.0/ws/win32/swt.jar)SWT_JAR 指向該文件,專案間復用。import org.eclipse.swt.widgets.*;
import org.eclipse.swt.*;
public class SwtHello {
public static void main(String[] args) {
Display display = new Display(); // 連接原生窗口系統
Shell shell = new Shell(display); // 頂層窗口
Label label = new Label(shell, SWT.NONE); // 標籤控件
label.setText("Hello, SWT!");
shell.pack(); // 依佈局計算尺寸
label.pack();
shell.open(); // 顯示窗口
// 事件循環
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep(); // 無事件時釋放 CPU
}
display.dispose(); // 釋放原生資源
}
}
Run Configurations → Arguments → VM Arguments 添加:
-Djava.library.path=/path/to/swt/native/libs
// 例:D:/eclipse/plugins/org.eclipse.swt.win32_3.0.0/os/win32/x86
或將該路徑加入系統 PATH 環境變量,永久生效。
| 維度 | SWT | Swing/AWT |
|---|---|---|
| 渲染引擎 | 原生 OS Widget (JNI) | Java 2D 純軟件繪製 |
| 外觀一致性 | 完美融入平台風格 | 可插拔 Look&Feel,非原生 |
| 性能/記憶體 | 極優(共享原生句柄) | 較重(全 Java 對象圖) |
| 擴展性 | 受限於原生控件能力 | 無限(可自繪任意圖形) |
| 部署體積 | 需分平台打包原生庫 | 單純 Jar,Write Once Run Anywhere |
SWT 讓 Java 開發者以熟悉的語言享受原生 GUI 性能,是構建專業級桌面應用的利器。掌握其「Display/Shell/Widget」核心模型與事件循環,即可上手開發。