GWT取消选择事件

GWT取消选择事件,gwt,tree,Gwt,Tree,好的,我的问题很简单。我可以在树类中为选择事件添加类似事件预览的内容吗 我需要它,因为在树元素之间切换会初始化屏幕的其他部分,这可能并不总是可能的(例如,请求协同验证) structTree.addSelectionHandler(新的SelectionHandler(){ @凌驾 选举时公共无效(SelectionEvent事件){ //做点什么,或者取消选择 } }); 编辑 如果我为ClickEvent添加EventPreview,这可能会起作用,但我想知道是否有更干净的方法…Event

好的,我的问题很简单。我可以在
类中为
选择事件
添加类似
事件预览
的内容吗

我需要它,因为在树元素之间切换会初始化屏幕的其他部分,这可能并不总是可能的(例如,请求协同验证)

structTree.addSelectionHandler(新的SelectionHandler(){
@凌驾
选举时公共无效(SelectionEvent事件){
//做点什么,或者取消选择
}
});
编辑
如果我为
ClickEvent
添加
EventPreview
,这可能会起作用,但我想知道是否有更干净的方法…

EventPreview
不推荐使用,请改用
NativePreviewHandler
NativePreviewEvent

事件预览的思想是用于用户交互DOM事件—描述用户与浏览器交互时的物理操作的事件。这就是为什么它可以取消
单击事件

相反,
SelectionEvent
是一个逻辑事件-它起源于withing GWT代码,并描述小部件从用户的“物理”事件中看到的意图

但是,仍然有一种方法可以防止发生
SelectionEvent
s,但它在GWT中的使用不一致-树
小部件不使用它,因此这次它对您没有帮助。

其他小部件,如
TabLayoutPanel
StackLayoutPanel
在实际的
SelectionEvent
关闭之前在SelectionEvent
之前触发一个
before
,让您有机会在选择实际发生之前取消它

明白-感谢您的明确解释!:)通过将以前选择的项存储在外部变量中并在必要时恢复它,我成功地解决了这个问题。谢谢
structTree.addSelectionHandler(new SelectionHandler<TreeItem>() {
    @Override
    public void onSelection(SelectionEvent<TreeItem> event) {
        // Do something, or maybe cancel selection
    }
});