無効になっていると思われるウィジェットがいくつかあります。無効化されたウィジェットは、イベントを処理しません。しかし実際には、そのウィジェットにいくつかの UIHandlers が追加されています。OnClick、OnKeyPressed、OnKeyDown など。これらのハンドラーを 1 つずつ登録解除したくありません。また、if 句を追加したくありません。別のオプションは、そのウィジェットからサブクラス化し、OnBrowserEvent をオーバーライドすることですが、別のクラスを作成することを意味します。
そのウィジェットに関連するすべてのイベントを 1 つのコード スニペットで無効にすることはできますか?
私は次の解決策をグーグルで検索しました:
Event.addNativePreviewHandler(new Event.NativePreviewHandler()
{
public void onPreviewNativeEvent(Event.NativePreviewEvent pEvent)
{
final Element target = pEvent.getNativeEvent().getEventTarget().cast();
// block all events targetted at the children of the composite.
if (DOM.isOrHasChild(myWidget.getElement(), target))
{
pEvent.cancel();
}
}
});
それが私が欲しいものです。しかし、残念ながら動作しません:) OnFocusEvent、KeyDownEvent は引き続き到着し、対応するハンドラが呼び出されます。
これを達成するための短い方法はありますか?GWT2.5