我必须编写一个方法,在用户关闭窗口时执行某些操作。到目前为止,我设法编写了这段代码,但它不起作用(我将它放在我的控制器中的初始化方法中):
Scene scene = myTable.getScene();
Window window = null;
if (scene != null)
{
window = scene.getWindow();
System.out.println("scene is not null");
window.addEventHandler(WindowEvent.WINDOW_HIDDEN, new EventHandler<WindowEvent>
()
{
@Override
public void handle(WindowEvent w)
{
System.out.println("do somethong here");
};
});
不幸的是,甚至我的消息“场景不为空也不会显示。有没有人对如何做到这一点有更好的想法?
答案 0 :(得分:2)
如果您想在用户关闭窗口时执行某些操作,则应使用setOnCloseRequest()方法,如下所示:
window.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent event) {
//do something
}
});
现在,如果场景是null
,那么这段代码将不会执行,也不会发生任何事情,可能会在测试之前稍微System.out.println(scene);
来帮助您调试此问题。
答案 1 :(得分:1)
将更改侦听器添加到表的scene属性,并仅在场景更改为非null值时添加事件处理程序。
根据Marc的建议,调用setOnCloseRequest或setOnHidden可能是配置EventHandler的更好方法。