GWT:禁用某些小部件上的所有事件

时间:2013-11-14 16:29:25

标签: java events gwt

我有一些我认为被禁用的小部件。禁用小部件永远不应处理任何事件。但实际上我在该窗口小部件中添加了几个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

1 个答案:

答案 0 :(得分:0)

我最近有类似的问题。要解决它,应该添加:

pEvent.getNativeEvent().preventDefault()