首页 > Java > java教程 > 如何在 Maven 项目中找到 FXML 文件?

如何在 Maven 项目中找到 FXML 文件?

Barbara Streisand
发布: 2024-11-18 21:03:02
原创
554 人浏览过

How to Locate FXML Files in Maven Projects?

从 Maven 项目引用 FXML 文件

在 JavaFX 应用程序中,您的目标是使用以下代码从资源文件夹加载 FXML 文件:

FXMLLoader.load(getClass().getResource("main.fxml"));
登录后复制

当您的资源文件夹位于构建路径中时,您会遇到错误。为了解决这个问题,让我们探索一下定位 FXML 文件的选项。

Java/JavaFX 中的通用资源查找

回想一下,FXML 文件位置查找是 Java 中通用资源查找的子集。资源文件(包括 FXML 文件)是相对于类路径指定的。如需全面指南,请参阅:

  • JavaFX 资源查找:https://javafx-docs.github.io/javafx-docs/javafx/2.2/resources/resource_lookup.htm
  • 伊甸园指南: https://edencoding.com/javafx-resource-files

使用示例

以下代码片段演示加载 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"));
登录后复制

FXMLLoader 用法建议

  • 通过 new FXMLLoader() 实例化 FXMLLoader,而不是静态方法。
  • 在实例化的 FXMLLoader 上设置位置并调用 load(),而不是从流加载。
  • 使用 getClass().getResource() 派生基于 URL 的

IDE 和构建设置

确保您的 IDE 或构建工具将 FXML 文件从资源目录复制到构建输出目录。请参阅 Intellij 设置指南来管理此问题:https://stackoverflow.com/questions/25232751/how-to-convert-a-normal-java-project-in-intellij-into-a-javafx-project。

Java Jigsaw 模块化应用程序

在 Java Jigsaw 应用程序中,直接从类获取资源,而不是类装载机。

// Avoid:
ComboBoxStyling.class.getClassLoader().getResource("/css/styleclass.css");

// Use:
ComboBoxStyling.class.getResource("/css/styleclass.css");
登录后复制

以上是如何在 Maven 项目中找到 FXML 文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板