我正在使用SmartGwt开发SDI Web应用程序。在主窗口中,我想在单击按钮时弹出一个窗口。但是,当弹出窗口关闭时,主窗口无法捕获事件。有没有好办法呢?
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();
}
});
但是如果有人为我编写插件并且没有在其构造函数中使用这样的“回调函数”,那么如何跟踪Window close事件?我试图将一个VisiblityChangedHandler注册到弹出窗口,但它不起作用。
答案 0 :(得分:3)
窗口关闭处理程序事件捕获关闭事件,尝试使用
Window.addWindowClosingHandler(new ClosingHandler() {
@Override
public void onWindowClosing(ClosingEvent event) {
}
});