- PR -

SWTのComboのテキストが変更されたイベント

1
投稿者投稿内容
koji
常連さん
会議室デビュー日: 2005/07/14
投稿数: 28
投稿日時: 2005-08-26 13:50
こんにちは。

対象OSはWindows2000以上でアプリケーションを開発しています。
SWTのComboのテキストが変更されたイベントはとれますか?

コード:
combo1.addModifyListener(new ModifyListener() {
  public void modifyText(ModifyEvent evt) {
    combo1ModifyText(evt);
  }
});


このように作成しましたが、これではとれませんでした。
ちいにぃ
大ベテラン
会議室デビュー日: 2002/05/28
投稿数: 244
投稿日時: 2005-08-26 17:58
Example Plug-insを使えば簡単に調べることができます。

1. Example Plug-insをダウンロードして、インストールします。
Eclipse 3.0.2 http://download.eclipse.org/eclipse/downloads/drops/R-3.0.2-200503110845/
Eclipse 3.1 http://download.eclipse.org/eclipse/downloads/drops/R-3.1-200506271435/

2. Eclipseを起動し、ウィンドウ→ビュー→その他で「ビューの表示」を開き、
SWTExamples→SWT Controlsを選択。

3. SWT Controlsビューが開くので「Combo」を選び、下の方の「Listeners」のListenにチェックをつける。

4.表示されているComboを操作すれば、発生したイベントがListenersに表示されます。
koji
常連さん
会議室デビュー日: 2005/07/14
投稿数: 28
投稿日時: 2005-08-26 18:29
ちいにぃさん、非常に有用な事を教えていただいてありがとうございます。
これはすごく使えますね。

実際には以下のようなイベントが発生していました。
KeyDown: KeyEvent
Modify: ModifyEvent
KeyUp: KeyEvent
Deactivate: ShellEvent

ModifyEventが発生しているので、先述の方法でいけそうなのですが、記述ミス
等無いか調べてみます。

ありがとうございました!
ちいにぃ
大ベテラン
会議室デビュー日: 2002/05/28
投稿数: 244
投稿日時: 2005-08-27 02:03
手元 (Eclipse 3.0.2) では次のコード(kojiさんのコードとほぼ同じ)でイベントを取得できてます。

コード:
combo.addModifyListener(new ModifyListener() {
    public void modifyText(ModifyEvent e) {
        text.append(e.toString() + "¥r¥n"); // この掲示板では¥が化けるので全角で記載してます
    }
});


textはTextクラスで、複数行表示(SWT.MULTI)を指定してます。
コード:
text = new Text(shell, SWT.MULTI | SWT.BORDER);


Comboに'abcde'と入力すると、ModifyEventがtextに表示されました。

ModifyEvent{Combo {a} time=3184765 data=null}
ModifyEvent{Combo {ab} time=3185046 data=null}
ModifyEvent{Combo {abc} time=3185312 data=null}
ModifyEvent{Combo {abcd} time=3185640 data=null}
ModifyEvent{Combo {abcde} time=3185906 data=null}

余談。
SWT 3.0.2ではKeyDown, Modify, KeyUpが発生しますが、
SWT 3.1ではTextへの入力と同じくKeyDown, Verify, Modify, KeyUpが発生しました。
1

スキルアップ/キャリアアップ(JOB@IT)