关闭的javafx窗口处理程序

关闭的javafx窗口处理程序,java,javafx-2,javafx,Java,Javafx 2,Javafx,我必须编写一个方法,当用户关闭窗口时,该方法将执行某些操作。到目前为止,我成功地编写了这段代码,但它不起作用(我将其放在控制器的initialize方法中): Scene-Scene=myTable.getScene(); Window=null; 如果(场景!=null) { window=scene.getWindow(); System.out.println(“场景不为空”); window.addEventHandler(WindowEvent.window_隐藏,新的EventHan

我必须编写一个方法,当用户关闭窗口时,该方法将执行某些操作。到目前为止,我成功地编写了这段代码,但它不起作用(我将其放在控制器的initialize方法中):

Scene-Scene=myTable.getScene();
Window=null;
如果(场景!=null)
{
window=scene.getWindow();
System.out.println(“场景不为空”);
window.addEventHandler(WindowEvent.window_隐藏,新的EventHandler
()
{
@凌驾
公共无效句柄(WindowEvent w)
{ 
System.out.println(“在这里做某事”);
};
});

不幸的是,即使我的消息“scene is not null”也无法显示。是否有人对如何执行此操作有更好的想法?

将更改侦听器添加到表的scene属性,并且仅在场景更改为非null值时添加事件处理程序


根据Marc的建议,调用或可能是配置EventHandler的更好方法。

如果您想在用户关闭窗口时执行某些操作,则应使用setOnCloseRequest()方法,如下所示:

window.setOnCloseRequest(new EventHandler<WindowEvent>() {

        @Override
    public void handle(WindowEvent event) {
        //do something
    }
});
window.setOnCloseRequest(新的EventHandler(){
@凌驾
公共无效句柄(WindowEvent事件){
//做点什么
}
});
现在,如果场景为
null
,则此代码将不会执行,也不会发生任何事情,可能在测试之前执行一点
System.out.println(场景);
,将帮助您调试此问题。

“不幸的是,即使我的消息“scene is not null”也不会显示。”不显示,因为很明显场景为
null
window.setOnCloseRequest(new EventHandler<WindowEvent>() {

        @Override
    public void handle(WindowEvent event) {
        //do something
    }
});