2013-05-15 42 views
0

我正在使用SmartGwt开发SDI Web应用程序。在主窗口中,当点击一个按钮时,我想弹出一个窗口。但是,当弹出窗口关闭时,主窗口无法捕捉事件。有没有什么好的方法可以做到这一点?如何跟踪SmartGwt的窗口关闭

IButton showPopupButton = new IButton(); 
showPopupButton.addClickHandler(new ClickHandler() { 
    public void onClick(ClickEvent event) { 
     Window popup = new Window(); 
     popup.show(); 
     SC.say("The popup was closed"); // UNEXPECT: It shows up just after the popup is shown. 
    } 
}); 

目前,我可以声明参数BooleanCallback到构造函数,这样,当将要关闭弹出窗口,它应该调用回调函数。

我有一个解决办法:

IButton showPopupButton = new IButton(); 
showPopupButton.addClickHandler(new ClickHandler() { 
    public void onClick(ClickEvent event) { 
     Window popup = new MyWindow(new BooleanCallback() { 
      public void execute(Boolean value) { 
       SC.say("The popup was closed"); 
      } 
     }); 
     popup.show(); 
    } 
}); 

但如果别人编写一个插件,我和不使用这样的“回调函数”到它的构造,如何跟踪窗口关闭事件?我试图注册一个VisiblityChangedHandler到弹出窗口,但它不起作用。

回答

2

窗正在关闭处理事件捕捉关闭事件,与

Window.addWindowClosingHandler(new ClosingHandler() { 

      @Override 
      public void onWindowClosing(ClosingEvent event) { 


      } 
     }); 
+0

此代码尝试将监控所有窗口关闭的事件不是一个特定的窗口。但对于不同的窗口,响应操作可能会有所不同。你的方法似乎工作。我让问题公开三天,看看有没有更好的办法。 – stanleyxu2005

+0

+ 1.Afaik,唯一的方法。 –