Gwt 处理窗口关闭事件

Gwt 处理窗口关闭事件,gwt,gxt,Gwt,Gxt,单击窗口的关闭按钮时,我正在尝试处理该事件: //查看代码 @凌驾 public void attachWindowListener(WindowListener listener){ addWindowListener(监听器); } //演示者代码 view.attachWindowListener(新的WindowListener(){ public void windowHide(WindowEvent we){ log(“窗口事件处理字段”); processFields(); }

单击
窗口的关闭按钮时,我正在尝试处理该事件:

//查看代码
@凌驾
public void attachWindowListener(WindowListener listener){
addWindowListener(监听器);
}
//演示者代码
view.attachWindowListener(新的WindowListener(){
public void windowHide(WindowEvent we){
log(“窗口事件处理字段”);
processFields();
}         
});
但是,windowHide函数似乎没有执行,因为我看不到我放在那里的日志

如何正确处理该事件

怎么样

Window.addCloseHandler( 
    new CloseHandler<Window>() 
    {
        public void onClose( CloseEvent<Window> windowCloseEvent ) 
        {
            // Do your worst here
        }
    } );
Window.addCloseHandler(
新CloseHandler()
{
公共void onClose(CloseEvent windowCloseEvent)
{
//在这里尽你最大的努力
}
} );
我通常把它放在我的
EntryPoint
类的
onModuleLoad()


干杯,

根据所提供的信息,我猜a.)您认为正在触发的事件没有为窗口组件触发(即使它们似乎应该触发)或b.)事件正在触发,但顺序与您预期的不同

例如,当窗口关闭且窗口对象的
WindowEvent
从不触发时,可能会首先触发
BrowserEvent
或其他事件。根据GXT 2.x的API文档,WindowEvent将在隐藏和停用时触发,但它没有指定在关闭时触发。GXT 3.0.x API文档在这一点上不太清楚,但我会假设相同的行为。不幸的是,Sencha没有提供关于给定组件触发哪些事件以及触发顺序的良好文档

话虽如此,通过使用一个debug类来输出它所连接的组件上的所有事件,我很幸运地解决了类似的问题。这可能有助于了解触发的事件及其执行顺序,并且您可以找到一个最佳事件,您可以将
processFields()
方法附加到该事件

有关调试器类的一个很好的示例,请参阅相关文章中的回答:。它还包括如何将调试器附加到组件的示例

窗口的API文档,GXT 2.x:

窗口的API文档,GXT 3.0.x:

这起作用了:

    window.addListener(Events.Hide, new Listener<ComponentEvent>() {
        @Override
        public void handleEvent(ComponentEvent be) {
          // Do stuff
        }
    });
window.addListener(Events.Hide,new Listener()){
@凌驾
公共无效handleEvent(组件事件be){
//做事
}
});

我相信@xybrek是在问GXT的
窗口
小部件,而不是
com.google.gwt.user.client.Window
@ThomasBroyer是的,我是在问Ext gwt(GXT)窗口