小組件

SWT 併入許多完整功能,但系統核心(小組件佈置事件 )的基礎知識是實作有用及健全應用程式絕對必要的。

小組件應用程式結構

當您使用平台工作台延伸提供 UI 元素時,工作台會為您處理啟動 SWT 的機制。

如果您是在工作台之外從頭開始撰寫 SWT 應用程式,則必須詳細瞭解 SWT 的應用程式結構。

典型獨立式 SWT 應用程式具有下列結構:

下列程式碼片段改編自 org.eclipse.swt.examples.helloworld.HelloWorld2 應用程式。因為該應 用程式僅顯示字串 "Hello World",所以不需要對任何小組件事件登錄。

public static void main (String [] args) {Display display = new Display ();Shell shell = new Shell (display);Label label = new Label (shell, SWT.CENTER);      label.setText ("Hello_world");
      label.setBounds (shell.getClientArea ());
      shell.open ();
      while (!shell.isDisposed ()) {
         if (!display.readAndDispatch ()) display.sleep ();
      }
      display.dispose ();
   }

Display

Display 代表 SWT 與基礎平台的 GUI 系統之間的連線。Display 主要用來管理平台事件迴圈 及控制 UI 執行緒和其他執行緒之間的通訊。(有關 UI 執行緒作業問題的完整討論 ,請參閱用戶端的執行緒作業問題。)

以大部分應用程式而言,您可以遵循上面使用的型樣。您必須在建立任何視窗前先建 立一個顯示畫面,而且您必須在 Shell 關閉後除去該顯示畫面。除非您是設計多重 執行緒的應用程式,否則不需要對顯示畫面考慮太多。

Shell

Shell 是由 OS 平台視窗管理程式所管理的一個「視窗」。 最上層 Shell 就是建立為顯示畫面子項的那些視窗。這些視窗就是使用者使用應用 程式時移動、調整大小、最小化和最大化的那些視窗。第二層 Shell 就是建立為另 一個 Shell 子項的那些視窗。這些視窗通常作為對話視窗或其他僅存於另一視窗環境定義中的暫時性視窗。

母項和子項

非最上層 Shell 的所有小組件都必須具有母項。最上層 Shell 沒有母項, 但它們是根據特殊 Display 來建立的。您可以使用 getDisplay() 來存取這個顯示畫面。所有其他小組件都將建立成最上層 Shell 的後代(直接或間接)。

複合小組件是可具有子項的小組件。

當您看到應用程式視窗時,您可以將它視為小組件樹狀結構或是根為 Shell 的階層 。 根據應用程式的複雜性,可能有 Shell 的單一子項、許多子項或具有子項的組合之 巢狀層次。

樣式位元

某些小組件內容必須在建立小組件時設定,而且以後無法變更。 例如,清單可能是單一或多重選項,不一定會有捲軸。

這些內容(稱為樣式)是在建構子中設定。所有小組件建構子都有 int 引數, 它指定所有想要樣式的按位元 OR。在某些情況下,特定樣式被視為一種提示, 這表示它可能不適用所有平台,而會在不支援它的平台上被順利忽略。

樣式常數位於 SWT 類別中作為 public static 欄位。 每一個小組件類別適用的常數清單包含在 SWT 的 API 參照中。

除去資源

SWT 下面的平台需要明確配置及釋出 OS 資源。為保存在小組件工具箱反映平台應用程式結構的 SWT 設計理念,SWT 需要您明確地釋出所配置的任何 OS 資源。 在 SWT 中,Widget.dispose() 方法用來釋出與特定工具箱物件相關的資源。

簡略的規則為如果您建立物件,就必須將它除去。以下是進一步解說這個理念的一些特定基礎規則:

這些規則有一個異常狀況。簡單資料物件, 如 RectanglePoint,不使用作業系統資源。 它們沒有 dispose() 方法,所以您不需要釋出它們。如果不確定,請查閱 javadoc 中有關特殊類別的資訊。

如果需要這個主題的進一步討論, 請參閱管理操作資源