JavaFX 和 IntelliJ 没有错误,尽管文档说我应该有一些

JavaFX and IntelliJ no errors althought the documentation says I should have some

我目前正在学习本教程:https://openjfx.io/openjfx-docs/(JavaFX 和 IntelliJ IDEA)。我使用 Intellij 2021.3.2.

我创建了一个项目(1. 创建一个 JavaFX 项目),效果很好,不需要 2。设置 JDK 16 因为它已经设置为 17(我想这没问题)。

但是奇怪的事情从这里开始(我对编程还很陌生,所以如果听起来很傻,我很抱歉)。 “您还可以将语言级别设置为 11 或更高。”我没有这个选项。因为它是“可以”,所以我觉得这没什么大不了的,但是如果有人可以解释这是怎么回事呢?出于好奇,因为我才刚开始学习教程,我只理解了一半。

然后3。创建库,他们有的我没有,我的东西是红色的:

所以当他们说“将 JavaFX 17 SDK 作为库添加到项目中”时,我不知道该怎么做。我也不知道如何修复红色的东西。

最后,他们说“警告:如果你 运行 现在项目将编译但你会得到这个错误:......”但是如果我点击这个按钮

一切正常!你知道我不是在抱怨,但我想更多地了解正在发生的事情。

然后他们建议我应该 4。添加 VM options 来解决我没有的问题。所以我想也许我的电脑在我不知情的情况下正确设置了 VM 选项,但目前没有 VM 选项(并且它可以工作)。尽管如此,我还是应该添加它们吗?

谢谢你的帮助,我很迷茫,觉得我什么都不懂。

openjfx 教程中用于使用 Idea 开始使用 JavaFX 的当前文档不正确,至少对于最近的 Idea 版本(2021.3 +)是这样。

本教程的编写就像创建了一个新的 Java 项目,而不是一个新的 JavaFX 项目。创建新的 JavaFX 项目后,教程中的大部分其余步骤要么是多余的,要么是错误的。

第 1 步,“创建一个 JavaFX 项目”,不仅仅是“创建一个 Java 项目”,这就是为什么其他一切都与教程不同的原因。

使用 Idea 开始使用 JavaFX 的更好教程是官方 Idea 文档:

新建 Java 项目和新建 JavaFX 项目的区别

新的 JavaFX 项目:

  1. 为 Maven (pom.xml) 或 Gradle (build.gradle) 提供构建脚本。

  2. 为 JavaFX 基础、图形、控件和 fxml 添加适当的依赖项。

  3. 提供示例应用程序和控制器代码,您可以立即运行。

  4. 示例项目是模块化的,提供了一个module-info.java

  5. 因为程序是模块化的,依赖是通过maven下载并被IDE识别的,所以不需要手动为模块配置VM 运行time选项路径和添加模块。

  6. Idea会识别Maven或Gradle项目,并自动将初始传递依赖库与Idea项目同步。

  7. Idea Maven 工具 window 中有一些选项可以让您同步对依赖库或库中 javadoc 和源代码的进一步更改。

  8. 选择 JDK 并将其附加到项目,如果不存在,则自动下载所选的 JDK 版本。

  9. 为项目设置适当的语言级别。

当您只使用创建新的 Java 项目选项时,它不会执行任何这些操作,因此您需要手动执行这些操作,这就是该教程其余部分的内容:

  1. 手动下载JDK并在SDK中配置。

  2. 手动下载 JavaFX SDK 并将其中的库添加到您的项目中。

  3. 手动配置 VM 模块化参数。

  4. 手动维护任何其他依赖项。

  5. 手动关联java文档和源代码。

  6. 手动编写基本应用程序的代码。

  7. 手动设置项目语言级别。

手动完成所有这些工作需要更多工作并且更容易出错。对于许多刚开始使用 FX 的人来说,手动工作通常会导致更糟糕的结果和更难以维护的项目,因此我不推荐它。

版本

关于要使用的版本,我建议使用 JDK 和 JavaFX 的最新稳定版 (non-beta),无论参考的是什么版本在您可能使用的任何教程中。

可以在新JavaFX项目向导生成的Maven文件中设置JavaFX版本,然后按Maven Tool中的按钮window同步Maven项目与 Idea 项目。

语言级别设置

这些在以后很重要,但在刚开始时就无关紧要了。

语言级别设置:

  1. 告诉编译器要将应用程序编译到哪个版本的 java 字节码。

  2. 告诉 IDE 执行哪些语言语法规则并提供帮助。

如果您仅使用 Java 17 功能,该应用程序将不会 运行 在 Java 11 VM 上。

您可以在Idea中手动定义设置:

不过最好在compiler section of the maven project里设置,然后用Idea同步工程,这样也会配置在IDE里的设置。

IMO,将其设置为最新的稳定版本,并要求您的应用程序至少 运行 具有 Java 版本(您可以通过使用 jlink 或 jpackage 强制执行)将您选择的 JRE 版本与打包的应用程序捆绑在一起。