Widget 是 SWT 所有 UI 元素的根基,Control 繼承自 Widget,是大多數可視控件的父類。本文梳理 Widget 共性 API、建立/尺寸/位置/可見性控制,並介紹 Label、Text、Button 三大基礎控件用法。
dispose() 遞歸釋放底層 OS 資源;isDisposed() 判斷狀態。只需對最外層(如 Display)呼叫 dispose()。getStyle() 取得建構時樣式位;getDisplay() 取得所屬 Display。setData(key, value) / getData(key) 任意附加資料,跨模組傳遞上下文極實用。// 幾乎所有控件構造函數簽名:new WidgetType(parent, style)
Text text = new Text(shell, SWT.CENTER | SWT.BORDER);
// 手動設定尺寸/位置
text.setBounds(10, 10, 200, 30); // x, y, width, height
// 或分別設定
text.setLocation(10, 10);
text.setSize(200, 30);
// 自動計算首選尺寸(需先設定內容)
label.setText("動態文字");
label.pack(); // 自動調整為恰好容納文字的大小
setVisible(boolean):顯示/隱藏setEnabled(boolean):啟用/禁用(禁用不響應使用者操作)setToolTipText(String):懸停提示文字// 文字標籤,對齊方式
Label label1 = new Label(shell, SWT.CENTER);
label1.setText("標題");
// 分隔線(水平/垂直)
Label separator = new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL);

SWT.SINGLE(預設), SWT.MULTI, SWT.WRAP, SWT.READ_ONLY, SWT.PASSWORDSWT.LEFT, SWT.CENTER, SWT.RIGHTinsert(), paste(), copy(), setSelection(), selectAll()同一 Button 類,透過樣式位組合呈現截然不同外觀:
| 樣式常量 | 外觀 | 備註 |
|---|---|---|
| SWT.PUSH | 普通按鈕 | 點擊彈起 |
| SWT.TOGGLE | 切換按鈕 | 按下保持陷入狀態,再按彈起 |
| SWT.ARROW | SWT.LEFT/RIGHT/UP/DOWN | 箭頭按鈕 | 指定方向 |
| SWT.CHECK | 核取方塊 | 可多選 |
| SWT.RADIO | 單選按鈕 | 同群組互斥 |
Button push = new Button(shell, SWT.PUSH | SWT.CENTER);
push.setText("普通按鈕");
Button toggle = new Button(shell, SWT.TOGGLE | SWT.LEFT);
toggle.setText("切換按鈕");
toggle.setSelection(true); // 預設按下
Button check = new Button(shell, SWT.CHECK);
check.setText("核取方塊");
Button radio = new Button(shell, SWT.RADIO);
radio.setText("單選按鈕");

掌握 Widget 基因與核心控件,是構建複雜介面的基石。下一章將深入事件模型,讓靜態介面動起來。