我有以下代码片段,changeTextArea是一个TextArea对象。

changeTextArea.addKeyboardListener(new KeyboardListenerAdapter()
  public void onKeyPress( Widget sender, char keyCode, int modifier){
    //do something
    //I WISH TO STOP THE EVENT THAT MAPS TO THIS KEYPRESS FROM BUBBLING ANY FURTHER
  }
}

如何停止导致调用此方法的事件从changeTextArea冒泡到Panels / Widgets / Composites /包含changeTextArea的内容。简洁地说,如何阻止它进一步冒泡。任何帮助将不胜感激(特别是代码示例)。

有帮助吗?

解决方案

据我所知,你无法通过键盘监听器来实现,但可以通过使用DOM类添加事件预览来实现:

DOM.addEventPreview(EventPreview preview) 

然后当你收到活动时:

onEventPreview(Event event) 

您应该返回false,表示您要取消该活动。 Event对象也支持此方法:

public final void cancelBubble(boolean cancel)

取消给定事件的冒泡。这将阻止事件传播到父元素。

您可以在此处找到更多详细信息: http:// google-web-toolkit .googlecode.com / SVN /的Javadoc / 1.5 / index.html的?概述-summary.html

其他提示

你绝对可以在任何有权访问Event的代码中使用Event的cancelBubble()和preventDefault()方法。没有必要进行事件预览...

您可以调用发件人的cancelKey()事件。这是一个只允许输入数字,所有其他键被拒绝的例子。

私有类RowColChangeHandler实现了KeyPressHandler     {

    public void onKeyPress(KeyPressEvent event) {
        char keyCode = event.getCharCode();
        if(keyCode <48 || keyCode >57)
        {
            ((TextArea)event.getSource()).cancelKey();
        }
    }
}

你可以通过这样做来达到它 event.doit = false

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top