停止冒泡GWT中的事件
问题描述:
我有以下代码片段,changeTextArea是一个TextArea对象。停止冒泡GWT中的事件
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向上冒泡到包含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?overview-summary.html
答
你绝对可以使用事件的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
达到它也许有些解释会让你的答案更加有用:) – 2014-07-28 13:55:55