我有一些我认为被禁用的小部件。禁用的小部件不应该处理任何事件。但事实上,我在该小部件中添加了几个 UIHandler。如 OnClick、OnKeyPressed、OnKeyDown 等。我不想一一注销这些处理程序,也不想给它们添加 if 子句。另一种选择是从该小部件继承并覆盖 OnBrowserEvent,但这意味着创建另一个类。
是否可以在一个代码段中禁用与该小部件相关的所有事件?
我用谷歌搜索了以下解决方案:
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 仍然到达并调用相应的处理程序。
有没有一些捷径可以做到这一点?总重量 2.5