2012-04-18 152 views
24

我在JavaFX 2.0中制作应用程序。在我的主窗口中,我将启动一个包含一些设置的新窗口。我完成调整设置后,我想按下按钮“保存更改”。JavaFX 2.0:关闭一个阶段(窗口)

我想这个按钮来保存更改并关闭窗口。 通过关闭我的意思是杀死它,而不是把它放在后台或设置可见性。 我读过有关的方法Stage.close()

http://docs.oracle.com/javafx/2.0/api/javafx/stage/Stage.html

正如你可以看到它的类似方法隐藏(),只隐藏的窗口,而不是关闭它。问:任何人都知道任何方法或有一些代码可以帮助我关闭窗口吗?

所有帮助将不胜感激。 谢谢!

+0

http://stackoverflow.com/questions/13567019/close-fxml-window-by-code-javafx – 2015-09-29 15:30:55

回答

41

的文档,你链接指出stage.close()

关闭这个阶段。这个调用等价于hide()。

作为hide()相当于close()close()关闭阶段,然后hide()也关闭阶段。

当应用程序中的所有阶段都隐藏起来(或者如果您喜欢,或因为它是同一件事而关闭),应用程序将退出。我知道,令人困惑的是,但这正是JavaFX团队决定命名和实施这些操作的方式。

如果需要,可以使用Platform.setImplicitExit(boolean)方法关闭最后一个窗口关闭或隐藏时退出应用程序的默认行为。

+0

感谢解释,这真的帮助我的理解! :) – haakonlu 2012-04-24 08:20:35

+0

我想知道如果Window.hide()也等同于Stage.hide(),并因此Stage.close()如果一个窗口是唯一的窗口的窗口?所以我不需要通过参考舞台。 – 2013-04-27 15:29:17

+0

我不明白你的评论斯蒂芬。您可能想创建一个新问题。 – jewelsea 2013-04-27 15:44:50

15

这完美地工作,我(与进口的Node):

((Node)(event.getSource())).getScene().getWindow().hide(); 
+0

我试图隐藏menuitem的ActionEvent窗口,但得到异常“menuitem不能被铸造到节点”。这里是例外 '由于:java.lang.ClassCastException:javafx.scene.control.MenuItem不能转换为javafx.scene.Node' – 2017-10-07 21:49:32