在 JavaFX 应用程序中,您的目标是使用以下代码从资源文件夹加载 FXML 文件:
FXMLLoader.load(getClass().getResource("main.fxml"));
当您的资源文件夹位于构建路径中时,您会遇到错误。为了解决这个问题,让我们探索一下定位 FXML 文件的选项。
回想一下,FXML 文件位置查找是 Java 中通用资源查找的子集。资源文件(包括 FXML 文件)是相对于类路径指定的。如需全面指南,请参阅:
以下代码片段演示加载 FXML 文件:
FXMLLoader loader = new FXMLLoader(); loader.setLocation(getClass().getResource("/main.fxml")); Parent content = loader.load();
有多个选项可用于指定资源中的 FXML 文件位置文件夹:
1。将所有 FXML 文件放在 src/main/resources 中:
loader.setLocation(getClass().getResource("/main.fxml"));
2.将 FXML 文件放入 src/main/resources/fxml:
loader.setLocation(getClass().getResource("/fxml/main.fxml"));
3.将FXML文件放在相应的资源目录中:
假设您加载FXML的类位于src/main/java/com/mycompany/myapp,则可以将FXML文件放在:
src/main/resources/com/mycompany/myapp/main.fxml
并使用以下方式加载它:
loader.setLocation(getClass().getResource("main.fxml"));
确保您的 IDE 或构建工具将 FXML 文件从资源目录复制到构建输出目录。请参阅 Intellij 设置指南来管理此问题:https://stackoverflow.com/questions/25232751/how-to-convert-a-normal-java-project-in-intellij-into-a-javafx-project。
在 Java Jigsaw 应用程序中,直接从类获取资源,而不是类装载机。
// Avoid: ComboBoxStyling.class.getClassLoader().getResource("/css/styleclass.css"); // Use: ComboBoxStyling.class.getResource("/css/styleclass.css");
以上是如何在 Maven 项目中找到 FXML 文件?的详细内容。更多信息请关注PHP中文网其他相关文章!