0

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

4

1 回答 1

0

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

pEvent.getNativeEvent().preventDefault()
于 2019-12-27T14:20:38.390 回答