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

问题描述 投票:0回答:1

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

java events gwt
1个回答
0
投票

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

pEvent.getNativeEvent().preventDefault()
© www.soinside.com 2019 - 2024. All rights reserved.