と呼ばれ、次のように私はButton
オブジェクトにKeyUpHandler
を追加しました:私はステップによってSuperDevモードステップでデバッグするときは、GWTのKeyUpHandlerは、複数回の代わりに、1
button.addKeyUpHandler(new KeyUpHandler() {
@Override
public void onKeyUp(final KeyUpEvent event1) {
if (event.isDownArrow()) {
counter++;
}
}
});
はしかし、の2つの呼び出しがありますonKeyUp
最初の呼び出しは常にcounter
の初期値(この場合は0)を持ち、2番目の呼び出しは最新の-maintained-値のcounter
です。 onKeyUp
のロジックを追加した方法もとマークされています。私はremoveHandler()
メソッドHandlerRegistration
の直後にonKeyUp
と呼ぶことを試みた。その結果、最初のキーアップイベント後に2回のコールが発生しましたが、別のキーアップイベントが発生したときにもう1回コールが発生し、さらにキーアップイベントエリアは発生しませんでした。私はこれがスーパーデーヴモードに関連したsthであるか、コンパイル後に内部オーバーヘッドがあると想定しています。 GWTでイベントハンドラを追加する正しい方法は何ですか? removeHandler()
HandlerRegistrationメソッドを呼び出すことによって、常に各ハンドラを処理する必要がありますか?
ハンドラを複数回追加しますか? – Baz
はい、ハンドラが異なります(MouseUpHandlerとKeyUpHandler)。しかし、ボタンオブジェクトの作成時にMouseUpHandlerが追加されている間、RunUnableを介してKeyUpHandlerを追加します。 ClickHandlerはキーボードイベントとマウスイベントの両方に呼び出されていることもわかりました。 – baris
あなたが作成するハンドラは、どのループでも呼び出していますか? –