在 Platform.startup() 启动的 javafx 应用程序中多次显示 Stage/Dialog

Showing Stage/Dialog more than once in javafx application that is launched by Platform.startup()

我正在构建一个 运行 在后台运行的应用程序,并通过单击 SystemTray 上的图标提供对控制面板(JavaFX 对话框)的访问。

JavaFX 9 添加了无需扩展 Application class, by invoking the method Platform.startup().

即可启动 JavaFX 应用程序的功能

当用户双击系统托盘图标时,我调用 Platform.runLater() 并将新对话框的创建和显示传递给它。然而,当用户关闭第一个对话框并尝试再次打开它时,它静静地打开失败。

调查 openJFX 11.0.1 源代码后发现,JavaFX 运行时会在最后一个 JavaFX window 关闭后终止其工具包。

我试过隐藏对话框而不是关闭它,但这也无济于事。有什么解决方法吗?

您想使用 Platform.setImplicitExit(false).

Sets the implicitExit attribute to the specified value. If this attribute is true, the JavaFX runtime will implicitly shutdown when the last window is closed; the JavaFX launcher will call the Application.stop() method and terminate the JavaFX application thread. If this attribute is false, the application will continue to run normally even after the last window is closed, until the application calls exit(). The default value is true.