首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JavaFX中运行Java9应用程序线程/工具包

在JavaFX中运行Java9应用程序线程/工具包
EN

Stack Overflow用户
提问于 2018-02-15 15:53:19
回答 1查看 953关注 0票数 2

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

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

代码语言:javascript
复制
//Run JavaFX Application Thread/Toolkit
    PlatformImpl.startup(() -> {
    });

它尝试启动JavaFX工具包

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

有哪一种替代品呢?

如何启动JavaFX工具包?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-15 16:44:36

startup()方法是Java9发行版中从非公共类PlatformImpl提升到公共API Platform类的方法之一。现在它已经完全记录在API文档中了。

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

代码语言:javascript
复制
Platform.startup(() -> { });

请注意,此方法的用例相当少见,API文档需要花费一定的时间来强调这一点:

通常,没有必要显式调用此方法,因为它是根据构建大多数JavaFX应用程序的方式调用的。 ..。 如前所述,通常情况下,JavaFX应用程序线程会自动启动。只有在尚未初始化JavaFX运行时才调用此方法是非常重要的。自动启动JavaFX运行时的情况包括: 对于扩展JavaFX的标准Application应用程序,并使用JavaFX或Application类中的一个启动方法来启动应用程序,FX运行时在加载Application类之前由启动程序自动初始化。

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

当JavaFX运行时已经运行时调用此方法将导致抛出一个IllegalStateException --请求只启动JavaFX运行时一次是有效的。

因此,在进行更改的过程中,您需要更新应用程序以使其与Java 9兼容,因此您可能需要仔细考虑是否需要调用startup();也许无论如何都有一种更标准和更健壮的方法来启动JavaFX应用程序。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48811237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档