我正在构建一个在后台运行的应用程序,通过单击SystemTray上的图标可以访问控制面板(JavaFX对话框)。
JavaFX 9通过调用方法Application
,增加了在不扩展Platform.startup()
类的情况下启动JavaFX应用程序的功能。
当用户双击系统任务栏图标时,我叫Platform.runLater()
并将其创建并显示一个新对话框传递给它。但是,当用户关闭第一个对话框并尝试再次打开它时,它无提示打开失败。
研究了openJFX 11.0.1源代码后,事实证明,一旦关闭了最后一个JavaFX窗口,JavaFX运行时就会终止其工具包。
我尝试隐藏对话框而不是关闭对话框,但这也无济于事。有什么解决方法吗?
答案 0 :(得分:3)
您要使用Platform.setImplicitExit(false)
。
将
implicitExit
属性设置为指定值。如果此属性为true,则在关闭最后一个窗口时,JavaFX运行时将隐式关闭;否则,将关闭JavaFX运行时。 JavaFX启动器将调用Application.stop()
方法并终止JavaFX应用程序线程。如果此属性为false,则即使关闭了最后一个窗口,应用程序也将继续正常运行,直到应用程序调用{{1}}。默认值为true。