正如评论中提到的,入门指南是从Java 11和JavaFX 11开始的地方。
像Java 11之前一样工作的关键是要了解:
- JavaFX 11 不再是 JDK 的一部分
- 您可以以不同风格获取它,既可以作为 SDK,也可以作为常规依赖项(maven/gradle)。
- 您需要将其包含在项目的模块路径中,即使您的项目不是模块化的。
JavaFX 项目
如果你在IntelliJ中创建一个常规的JavaFX默认项目(没有Maven或Gradle),我建议你从这里下载SDK。请注意,也有jmods,但对于非模块化项目,SDK是首选。
以下是运行默认项目的简单步骤:
- 创建 JavaFX 项目
- 设置 JDK 11(指向本地 Java 11 版本)
- 将 JavaFX 11 SDK 添加为库。该 URL 可以是类似于 .完成此操作后,您会注意到 JavaFX 类现在已在编辑器中识别出来。
/Users/<user>/Downloads/javafx-sdk-11/lib/
-
在运行默认项目之前,只需将以下内容添加到 VM 选项:
--module-path /Users/<user>/Downloads/javafx-sdk-11/lib --add-modules=javafx.controls,javafx.fxml
跑
马文
如果使用 Maven 生成项目,请按照下列步骤操作:
- 使用 JavaFX 原型创建 Maven 项目
- 设置 JDK 11(指向本地 Java 11 版本)
-
添加 JavaFX 11 依赖项。
<dependencies> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-controls</artifactId> <version>11</version> </dependency> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-fxml</artifactId> <version>11</version> </dependency> </dependencies>
完成此操作后,您会注意到 JavaFX 类现在已在编辑器中识别出来。
您会注意到Maven为您管理所需的依赖项:它将为javafx.controls添加javafx.base和javafx.graphics,但最重要的是,它将根据您的平台添加所需的分类器。在我的情况下,Mac。
这就是为什么你的jar是空的,因为有三个可能的分类器(windows,linux和mac平台),它们包含所有的类和本机实现。org.openjfx:javafx-controls:11
如果您仍然想转到.m2存储库并手动从那里获取依赖项,请确保选择正确的依赖项(例如.m2/repository/org/openjfx/javafx-controls/11/javafx-controls-11-mac.jar
)
将默认的 maven 插件替换为此处的插件。
运行 ,它应该可以正常工作。
mvn compile javafx:run
类似的工作也适用于Gradle项目,如这里详细解释的那样。
编辑
上面提到的入门指南包含 IntelliJ 的更新文档和示例项目:
JavaFX不再是JDK 11的一部分的问题。以下解决方案使用 IntelliJ 工作(尚未在 NetBeans 中尝试过):
-
将 JavaFX 全局库添加为依赖项:
设置 -> 项目结构 -> 模块。在模块中,转到“依赖关系”选项卡,然后单击添加“+”符号 ->库 -> Java->从列表中选择 JavaFX,然后单击“添加所选内容”,然后单击“应用设置”。
-
右键单击 JavaFX 项目中的源文件 (src),然后创建一个新的模块信息.java文件。在文件内部写入以下代码:
module YourProjectName { requires javafx.fxml; requires javafx.controls; requires javafx.graphics; opens sample; }
我向你保证,这两个步骤将解决你使用JavaFX的所有问题。
参考:有一个由学习编程频道制作的You Tube教程,将在短短5分钟内解释上述所有细节。我还建议观看它来解决您的问题:https://www.youtube.com/watch?v=WtOgoomDewo
-
更新表查看行外观编辑的信息 我有一些措施来更改某些 TableView 行的外观。该行应以笔触和红色显示文本。实际上,我可以用红色显示它,但仍然无法进行笔触。这是我用来更改行外观的 css 类: 如何更新所有列?
-
JavaFX - Observable Collections in the data model classes Here follows a simple piece of JavaFX code, to illustrate my question. If I understood correctly, after calling the method, not only will the content of the list be shown in the Gui component, but also if items are added to the instance afterwards, t
-
JavaFX FileChooser可以“记住”它打开的最后一个目录吗? 我的视图控制器有一个用于打开和保存文件的实例。 相反,每次我调用这些方法之一时,对话框都会在用户主目录中打开。 如何使对话框的“当前目录”在不同的调用中持久存在? 当前行为
-
NSEvent 中的断言失败? 感谢您抽出宝贵时间阅读本文。我对JavaFX相当陌生,在我的编译器中有一个奇怪的错误,我想对此有所了解。 这是错误: 除了教会之外,这不会去任何地方,除了自动化一些繁琐的任务之外
-
JavaFX:无法在 Linux 上查找或加载主类 我已经使用Intellij Idea在Windows中使用Java(FX)开发了一个程序,并且运行良好,然后我导出了工件(jar),并且在Windows上运行它没有问题(无论是使用控制台还是双击它)。 然后我把它复制到