在Java9中运行JavaFX Application Thread / Toolkit

时间:2018-02-15 15:53:19

标签: javafx migration java-9

我正在尝试将程序从java 8迁移到java 9。

在我的程序中,我找到了以下代码。

//Run JavaFX Application Thread/Toolkit
    PlatformImpl.startup(() -> {
    });

它尝试启动JavaFX Toolkit

不幸的是,java 9中不再支持PlatformImpl.startup。

有哪种替代品呢?

如何启动JavaFX Toolkit?

谢谢

1 个答案:

答案 0 :(得分:3)

startup()方法是Java 9发行版中从非公共类PlatformImpl升级到公共API Platform类的方法之一。现在已完整记录在API documentation

因此,Java 9中的等效调用是

Platform.startup(() -> { });

请注意,此方法的用例非常少见,API文档会花些时间来强调这一点:

  

通常,没有必要显式调用此方法,因为它是由大多数JavaFX应用程序的构建方式调用的。

     

...

     

如上所述,通常会自动启动JavaFX Application Thread。重要的是,只有在JavaFX运行时尚未初始化时才调用此方法。自动启动JavaFX运行时的情况包括:

     

对于扩展Application的标准JavaFX应用程序,并使用Java启动程序或Application类中的一个启动方法来启动应用程序,启动程序会自动初始化FX运行时<{1}}类已加载。

     
      
  • 对于使用Application显示FX内容的Swing应用程序,在构建第一个JFXPanel实例时初始化FX运行时。
  •   
  • 对于使用JFXPanel显示FX内容的SWT应用程序,在构建第一个FXCanvas实例时初始化FX运行时。   当应用程序不遵循任何这些常用方法时,开发人员有责任通过调用此启动方法手动启动JavaFX运行时。
  •   
     

当JavaFX运行时已经运行时调用此方法将导致抛出FXCanvas - 它仅对请求JavaFX运行时启动一次有效。

因此,当您正在进行更改时,您需要将应用程序更新为兼容Java 9,您可能需要仔细考虑是否需要调用IllegalStateException;也许有一种更标准,更健壮的方法来启动你的JavaFX应用程序。