イベント

表示といくつかのウィジェットを作成して、アプリケーションのメッセージ・ループを開始したら、実際の作業はどの時点で行われるのでしょうか? それは、イベントがキューから読み取られ、ウィジェットへディスパッチされるごとに起こります。 ほとんどのアプリケーション・ロジックは、ユーザーのイベントへの応答としてインプリメントされます。

基本的なパターンでは、作成したウィジェットにリスナーを追加し、該当するイベントが発生したときにリスナー・コードが 実行されます。 以下に、org.eclipse.swt.examples.helloworld.HelloWorld3 を基に作成した簡単な例を示します。

      Display display = new Display ();
      Shell shell = new Shell (display);
      Label label = new Label (shell, SWT.CENTER);
   ...
   shell.addControlListener(new ControlAdapter() {
      public void controlResized(ControlEvent e) {
         label.setBounds (shell.getClientArea ());
      }
   });

リスナーのタイプごとに、リスナーを定義するインターフェース (XyzListener)、 イベント情報を提供するクラス (XyzEvent)、およびリスナーを 追加する API メソッド (addXyzListener) があります。  リスナー・インターフェースに定義されたメソッドが複数ある場合は、 リスナー・インターフェースをインプリメントして空のメソッドを提供する アダプター (XyzAdapter) が同様に提供されます。 すべてのイベント、リスナー、およびアダプターは、 org.eclipse.swt.events のパッケージに定義されています。

下の表に、使用可能なイベントおよび各イベントをサポートするウィジェットを示します。

イベントの型

説明

ウィジェット

Arm

メニュー項目などのウィジェットがアームされるときに生成されます。

MenuItem

Control

コントロールが移動またはサイズ変更されるときに生成されます。

Control, TableColumn, Tracker

Dispose

ウィジェットがプログラムによって、またはユーザーによって手動で削除されるときに生成されます。

Widget

Focus

コントロールがフォーカスを得たり失ったりするときに生成されます。

Control

Help

F1 キーを押すなどして、ユーザーがウィジェットにヘルプを要求するときに生成されます。

Control, Menu, MenuItem

Key

コントロールがキーボード・フォーカスを保持する場合に、ユーザーがキーボード・キーを押したり放したりすると生成されます。

Control

Menu

メニューが隠されたり、表示されたりする場合に生成されます。

Menu

Modify

ウィジェットのテキストが変更される場合に生成されます。

CCombo, Combo, Text, StyledText

Mouse

コントロール上でマウスを押したり、放したり、またはダブルクリックしたりすると生成されます。

Control

MouseMove

コントロールの上を横切ってマウスを動かすと生成されます。

Control

MouseTrack

コントロール上にマウスが現れたり、消えたり、移動するときに生成されます。

Control

Paint

コントロールが再描画を必要とするときに生成されます。

Control

Selection

ユーザーがコントロール内のアイテムを選択するときに生成されます。

Button, CCombo, Combo, CoolItem, CTabFolder, List, MenuItem, Sash, Scale, ScrollBar, Slider, StyledText, TabFolder, Table, Table CursorTableColumn, TableTree, Text, ToolItem, Tree

Shell

シェルを最小化、最大化、活動化、非活動化、または閉じるときに生成されます。

Shell

Traverse

キー・ストロークを使うユーザーによって、 コントロールが横切られるときに生成されます。

Control

Tree

ツリー内のアイテムをユーザーが展開または縮小表示するときに生成されます。

Tree, TableTree

Verify

ウィジェットのテキストが変更される直前に生成されます。これにより、 アプリケーションは、テキストを変更するか変更を防止するかを確認します。

Text, StyledText

型なしイベント

上記の型付きイベント・システムは、 低レベルの型なしウィジェット・イベント・メカニズムを使用してインプリメントされます。 このメカニズムは、アプリケーションによって使用されるよう意図されたものではなく、 SWT インプリメンテーションの中で使用されます。 また、多くのワークベンチ・ウィザード・ページのインプリメンテーション内でも使用されます。

型なしメカニズムは、イベントの型を識別する定数に依存し、 この定数と共に提供される汎用リスナーを定義します。 これにより、リスナーは "ケース・スタイル"・リスナーをインプリメントすることができます。 以下のコードの断片では、汎用イベント・ハンドラーを定義し、 いくつかのリスナーをシェルに追加します。

   Shell shell = new Shell();
   Listener listener = new Listener() {
      public void handleEvent(Event e) {
         switch (e.type) {
            case SWT.Resize:
               System.out.println ("Resize received");
               break;
            case SWT.Paint:
               System.out.println ("Paint received");
               break;
            default:
               System.out.println("Unknown event received");
         }
      }
   };
   shell.addListener(SWT.Resize, listener);
   shell.addListener(SWT.Paint, listener);

Copyright IBM Corporation and others 2000, 2003.