在过去的六年里,我一直在我的一些演示应用程序中使用JavaFX,我了解到的一件事是,它是一个移动的目标,特别是在Java 11中JavaFX被从JDK中移除之后。我想知道的是,目前创建一个新的JavaFX应用程序的最佳方法是什么,以及如何从IntelliJ IDEA内部运行它?
构建工具和JavaFX
JavaFX并不像你在应用中可能使用的其他库那样简单依赖。我们不能在Maven或Gradle文件中添加一个新的依赖关系,然后直接开始使用它,这主要是因为UI框架比其他类型的框架更依赖于你的操作系统。这主要是因为UI框架比其他类型的框架更依赖于你的操作系统,所以构建工具需要为你的操作系统引入正确的依赖关系。
在我的JavaFX应用中使用过Maven和Gradle,我看到了这两种工具所采取的方法。由于这两个构建工具都很流行,所以我想把它们都介绍一下。
使用Java模块系统
如果你想要与IntelliJ IDEA、JavaFX和Gradle一起工作的无缝体验,并且你可以自由地做出所有的架构决策,可以尝试使用Java的模块系统(在Java 9中引入)创建一个模块化的应用程序。对像我们在这里编写的演示应用这样的小应用来说,唯一真正影响的是一个额外的文件,模块-info.java。
在使用模块时有很多微妙的地方,我在这个例子中不会涉及。最主要的是,你需要注意的是,模块化应用使用的是模块路径,而不是我们熟知和喜爱的classpath。
OpenJFX入门文档介绍了如何创建这样的应用程序(按照菜单项 "JavaFX和IntelliJ"->"Gradle模块化")。
然而,如果你使用的是Gradle 6.7或以上版本(如果你从IntelliJ IDEA 2020.3创建了一个Gradle应用程序,就会是