关闭javafx窗口处理程序

时间:2013-08-29 23:50:27

标签: java javafx-2 javafx

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

 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");

        };
        });

不幸的是,甚至我的消息“场景不为空也不会显示。有没有人对如何做到这一点有更好的想法?

2 个答案:

答案 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的建议,调用setOnCloseRequestsetOnHidden可能是配置EventHandler的更好方法。