SWT には高性能な機能が多く含まれていますが、 システムのコアの基本知識は、有益で堅固なアプリケーションを実装するために必要な、 ウィジェット、レイアウト、およびイベントの 3 つです。
プラットフォーム・ワークベンチ拡張を使用して、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 (); }
表示 は、 SWT と基礎となるプラットフォームの GUI システムとの間の接続を表します。表示は、 主に、UI スレッドとその他のスレッド間のプラットフォーム・イベント・ループおよびコントロール通信の管理のために使用されます。 (UI スレッド化問題についての完全な説明は、 「クライアントに関するスレッド化の問題」を参照してください。)
ほとんどのアプリケーションでは、上で使用されているパターンに従うことができます。 ウィンドウを作成する前に表示を作成し、 シェルを閉じたときに表示を削除しなければなりません。マルチスレッド・アプリケーションを設計していない限り、 表示についてこれ以上のことを考える必要はありません。
シェル は、 OS プラットフォーム・ウィンドウ・マネージャーにより管理される "ウィンドウ"です。 トップレベルのシェルは、表示の子として作成されるシェルです。これらのウィンドウは、 アプリケーションの使用中に、ユーザーが移動、サイズ変更、最小化、および最大化をするウィンドウです。 2 次シェルは、他のシェルの子として作成されるシェルです。これらのウィンドウは、 通常、ダイアログ・ウィンドウ、または別のウィンドウとの関連のみで存在する他の一過性ウィンドウとして使用されます。
トップレベルのシェルではないすべてのウィジェットには親が必要です。 トップレベルのシェルには親がありませんが、トップレベルのシェルは特定の表示に 関連付けられて作成されます。 この表示には、getDisplay() を使用してアクセスできます。 他のすべてのウィジェットは、トップレベルのシェルの子孫 (直接または間接の子孫) として作成されます。
コンポジット・ウィジェットは、子を持つことのできるウィジェットです。
アプリケーション・ウィンドウは、ルートがシェルであるウィジェット・ツリー、つまり、階層として考えることができます。 アプリケーションの複雑さによっては、シェルの子には 1 つ、またはいくつかの子があったり、 子のあるネストされたレイヤーのコンポジットがある可能性もあります。
ウィジェット・プロパティーには、ウィジェット作成時に設定する必要があり、後で変更できないものもあります。 例えば、リストが単一または複数の選択であるか、スクロール・バーがあるかないかなどがあります。
これらのプロパティーはスタイルと呼ばれ、コンストラクターで設定されます。 すべてのウィジェットのコンストラクターは、 すべての希望スタイルのビット単位 OR を指定する int 引数を取ります。 場合によっては、特定のスタイルはヒントと考えられます。 つまり、すべてのプラットフォームで使用可能ではないかもしれませんが、 そのスタイルをサポートしないプラットフォーム上では無視されます。
スタイルの定数は、共用静的フィールドとして SWT クラスに位置します。 ウィジェット・クラスごとに適用できる定数のリストは、 SWT の API 解説書に含まれています。
SWT の基底となるプラットフォームには、OS リソースの明示的な割り振りと解放が必要です。SWT は、 ウィジェット・ツールキット内のプラットフォーム・アプリケーション構造を反映する SWT 設計哲学を保ちながら、 ユーザーが割り振った OS リソースを明示的に開放するよう要求します。SWT では、 特定のツールキット・オブジェクトと関連するリソースを解放するために Widget.dispose() メソッドが 使用されます。
経験法則から、オブジェクトを作成すると、それを削除しなければなりません。 以下に、この哲学を詳しく説明する具体的な基本規則を示します。
これらの規則には例外が 1 つあります。 Rectangle および Point などの 単純なデータ・オブジェクトは、オペレーティング・システムのリソースを使用しません。 これらは、dispose() メソッドを持たないため、解放する必要はありません。 不明確な場合は、特定クラスの javadoc を参照してください。
このトピックについて詳しくは、「オペレーティング・システム・リソースの管理」を参照してください。