我有一些我认为被禁用的小部件。禁用小部件永远不应处理任何事件。但实际上我在该窗口小部件中添加了几个UIHandler。如OnClick,OnKeyPressed,OnKeyDown等。我不想逐个注销这些处理程序,我不想添加if-clauses给它们。另一种选择是从该窗口小部件继承并重写OnBrowserEvent,但它意味着创建另一个类。
是否可以在一个代码段中禁用与该窗口小部件相关的所有事件?
我用Google搜索了以下解决方案:
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
答案 0 :(得分:0)
我最近有类似的问题。要解决它,应该添加:
pEvent.getNativeEvent().preventDefault()