当前位置: 首页 > 知识库问答 >
问题:

在FXML中引用类资源

施德运
2023-03-14

我有一个使用Maven的JavaFX程序,它有一个标准的Maven文件树:

我如何引用layout.fxml内的logo.png,假设布局通过调用

Parent root = FXMLLoader.load(getClass().getResource("/fxml/layout.fxml"));

Main App中。

我一直在尝试使用

<image>
<Image url="@/graphics/logo.png" />
</image>

并尝试了该文件路径的许多变体(有和没有@),但是继续抛出

java.lang.reflect.InvocationTargetException 
... 
Caused by: java.lang.IllegalArgumentException: URL must not be empty

在创建URL的行上

共有1个答案

蔚宏大
2023-03-14

您正在尝试查找名为“backButton.png”的图像资源,而它应该是“logo.png”。

如果问题仍然存在,请尝试以下操作:

<Image url="@../graphics/logo.png" />

从官方FXML教程开始:

位置解析运算符(由属性值的@前缀表示)用于指定属性值应被视为相对于当前文件的位置,而不是简单的字符串。

 类似资料:
  • 我正在创建一个javafx GUI应用程序,我的项目是一个maven配置的项目。我希望能够在我的控制器中引用我的fxml文件,如下所示: 其中,我的main.fxml文件位于src/main/resources文件夹中,而我的控制器位于src/main/java文件夹中。我该怎么做呢?我的src/main/resources文件夹在构建路径中,并且我能够从src/main/java文件夹中的类调用

  • 问题内容: 我需要读取代码中的文件。它实际上位于此处: 我将其放在源包中,以便在创建可运行的jar文件(导出-> Runnable JAR文件)时将其包含在jar中。最初,我将其放在项目根目录中(并尝试了一个普通的子文件夹),但导出文件并未将其包含在jar中。 如果在我的代码中,我这样做: jar文件正确地找到了该文件,但是在本地运行(运行方式-> Java Main应用程序)会引发文件未找到异常

  • 我正在应用程序中扩展Bootstrap主题。我想通过主题包含一些css和js文件。 我试过将服务器上的资源放在一个文件夹中。我试过将资源放在应用程序Web-Content文件夹中的“KendoUI”中。这两种方法似乎都不起作用。当我在应用程序中打开Xpage时,它似乎没有加载任何东西。 如果我将资源直接放在Xpage中,我可以看到文件在那里(通过Chrome)。 主题中我的语法有错误吗? 顺便说一

  • 我有一个非常简单的fxml文件,带有一个复选框: 非常简单的controller类如下:

  • 我正在使用Gradle构建一个jar,其中包含META-INF中的xml文件。此文件的行如下 允许针对不同环境使用不同的SQL数据库。我想告诉gradle从项目属性展开${SQLDialent}。 我试过这个: 但是它因为而失败,在我看来,Jar任务也试图扩展文件中的属性。所以我尝试了 这不会引发上述异常,而是导致所有资源被复制两次—一次使用属性扩展,一次不使用属性扩展。我设法解决了这个问题 这正

  • 所以我尝试使用FXML登录示例的示例,只是我给出了FXML的其他方法。在fxml文件中,我给出了控制器的方法。 登录控制器类 第28行是: 我提到fxml文件在另一个文件夹中,即主文件文件夹。我不明白为什么在使用Oracle给出的示例时会出现这个错误,但使用的是另一个文件夹结构! 我的应用程序文件夹结构: 主 模型 安全性 skinfolder-CSS skinfolder-fxml skinfo