2013-05-15 61 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,唯一的方法。 –