TOPシステム開発> イベントリスナーを実装する




まるごとEclipse!
Visual Editorを使ったSWT開発

第5回:イベントリスナーの実装とサンプルアプリケーションの実行

著者:五座 淳一(GOZA, Junichi)   2006/3/28
1   2  次のページ
イベントリスナーを実装する

   ボタンがクリックされた、ウィンドウがリサイズされたなどのさまざまなイベントに処理を関連付けてプログラムを開発する方法を、イベントドリブン方式と呼びます。多くのGUIプログラミングでこの方式が採用されています。

   SWTでは、イベントを待ち受けるイベントリスナーを実装し、そのイベントリスナーにイベント発生時に行う処理を記述します。

   今回のサンプルアプリケーション開発では、「開く」ボタンが押されたというイベントに対して次の処理を実装します。

  1. ファイル選択ダイアログを開く
  2. ユーザーに選択されたファイル名をファイル名表示フィールドに表示する
  3. 写真イメージ描画キャンバスに表示する

表1:実装する処理

   イベントを待ち受ける対象のウィジェットであるbtnOpenを右クリックし、メニューから「イベント → イベントの追加...」を選択すると、図1のイベント追加ダイアログが表示されます。左側のイベントツリーから「Selection → widgetSelected」を選択し、「終了」ボタンをクリックすると、イベントリスナーが自動生成されます。

イベント追加ダイアログ
図1:イベント追加ダイアログ
(画像をクリックすると別ウィンドウに拡大図を表示します)

   自動生成されたイベントリスナーにはSystem.out.println()文がスタブとして埋め込まれています。パッケージエクスプローラーでPhotoViewere.javaファイルを右クリックし、メニューから「実行 → Java bean」を選択して動作を確認してみましょう。

   「開く」ボタンをクリックしたタイミングでコンソールに「widgetSelected()」という文字列が表示されることがわかるはずです。

   リスト1に示すprivateフィールドを追加し、自動生成されたイベントリスナーの実装をリスト2のように修正してください(いくつかインポート宣言を追加する必要があるので、Eclipseが示唆するインポート文を追加してください)。

リスト1:追加するprivateフィールド
private Image photoImage = null;

リスト2:btnOpenのイベントリスナーの実装
btnOpen.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
   public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
      FileDialog openDialog = new FileDialog(sShell,SWT.OPEN);
      String file = openDialog.open();
      if (file == null) {
         return;
      }
      txtFilePath.setText(file);
      photoImage = new Image(sShell.getDisplay(), file);
      cvsPhoto.redraw();
   }
});

   また、cvsPhotoに「Paint → paintControl」のイベントリスナーを追加し、そのイベントリスナーをリスト3のように修正してください。

リスト3:cvsPhotoのイベントリスナーの実装
cvsPhoto.addPaintListener(new org.eclipse.swt.events.PaintListener() {
   public void paintControl(org.eclipse.swt.events.PaintEvent e) {
      if (photoImage != null) {
         e.gc.drawImage(photoImage, 0, 0);
      }
   }
});

1   2  次のページ

書籍紹介
まるごとEclipse! Vol.1
まるごとEclipse! Vol.1 Javaの統合開発環境として定番のEclipse。その最新版をまるごと紹介
オープンソースの統合開発環境として定番の地位が揺るぎないEclipse(エクリプス)。プラグインによりその機能を自由に拡張することができるアーキテクチャによって、今ではJava開発環境の枠を越えて汎用的なアプリケーションフレームワークとして利用されている。2005年末に正式リリースされたサーバサイドWebアプリケーション開発環境Web Tools Platform(WTP)、Webを超えたユーザーインターフェースを提供するEclipse RCP(Rich Client Platform)など、Eclipseの最新版3.1とその周辺技術にスポットを当て、最新情報を余すことなく解説!

発売日:2006/02/02発売
定価:\2,079(本体 \1,980+税)
株式会社DTS 五座 淳一(GOZA, Junichi)
著者プロフィール
株式会社DTS 五座 淳一(GOZA, Junichi)
技術部所属。入社以来、交換機や携帯電話、Webシステムなど様々な開発を担当する。現在はRuby on Railsを使用した開発に携わり、生産性の高さに驚かされている。

この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。

INDEX
第5回:イベントリスナーの実装とサンプルアプリケーションの実行
イベントリスナーを実装する
  サンプルアプリケーションを実行する
Visual Editorを使ったSWT開発
第1回 SWTの特徴
第2回 アプリケーションの実行とVisual Editorのビューの解説
第3回 サンプルアプリケーションの開発 - ビジュアル・クラスの作成
第4回 レイアウトの設定
第5回 イベントリスナーの実装とサンプルアプリケーションの実行