我有一些我认为被禁用的小部件。禁用的窗口小部件永远不要处理任何事件。但实际上,我已经向该小部件添加了多个UIHandlers。例如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仍然到达并且调用了相应的处理程序。
是否有一些简短的方法可以完成此操作? GWT 2.5
我最近遇到了类似的问题。要解决它,应该添加:
pEvent.getNativeEvent().preventDefault()