5

次のコード スニペットがあります。changeTextArea は TextArea オブジェクトです。

changeTextArea.addKeyboardListener(new KeyboardListenerAdapter()
  public void onKeyPress( Widget sender, char keyCode, int modifier){
    //do something
    //I WISH TO STOP THE EVENT THAT MAPS TO THIS KEYPRESS FROM BUBBLING ANY FURTHER
  }
}

このメソッドが呼び出される原因となっているイベントを、changeTextAreaからPanels/Widgets/Composites/changeTextAreaを含むものにバブルアップさせるのをどのように停止しますか. 簡潔に言えば、それ以上の泡立ちを止めるにはどうすればよいでしょうか。助けていただければ幸いです(特にコードサンプル)。

4

4 に答える 4

6

私の知る限り、キーボード リスナー経由では実行できませんが、DOM クラスを使用してイベント プレビューを追加することで可能です。

DOM.addEventPreview(EventPreview preview) 

次に、イベントを取得すると:

onEventPreview(Event event) 

イベントをキャンセルしたい場合は、false を返す必要があります。Event オブジェクトは、次のメソッドもサポートしています。

public final void cancelBubble(boolean cancel)

指定されたイベントのバブリングをキャンセルします。これにより、イベントが親要素に伝播されなくなります。

詳細については、http: //google-web-toolkit.googlecode.com/svn/javadoc/1.5/index.html ?overview-summary.htmlをご覧 ください。

于 2008-10-18T05:29:20.827 に答える
4

Event にアクセスできる任意のコード内から、Event の cancelBubble() および preventDefault() メソッドを確実に使用できます。イベントのプレビューは必要ありません...

于 2008-10-20T16:59:52.927 に答える
2

送信者の cancelKey() イベントを呼び出すことができます。これは、数字の入力のみを許可する例で、他のすべてのキーは拒否されます。

プライベート クラス RowColChangeHandler は KeyPressHandler を実装します {

    public void onKeyPress(KeyPressEvent event) {
        char keyCode = event.getCharCode();
        if(keyCode <48 || keyCode >57)
        {
            ((TextArea)event.getSource()).cancelKey();
        }
    }
}
于 2010-12-22T01:11:07.103 に答える
0

あなたは可能であればそれに到達することができます event.doit = false

于 2014-07-28T13:53:18.143 に答える