1

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

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

        };
        });

不幸的是,即使我的消息“场景不为空”也不会显示。有没有人对如何做有更好的想法?

4

2 回答 2

2

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

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

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

现在如果场景是,null那么这段代码将不会被执行,也不会发生任何事情,也许System.out.println(scene);在测试之前一点点可以帮助你调试这个问题。

于 2013-08-30T07:13:37.913 回答
1

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

按照 Marc 的建议,调用setOnCloseRequestsetOnHidden可能是配置 EventHandler 的更好方法。

于 2013-08-30T00:27:18.190 回答