java - 某些图像未使用相对路径加载 - JavaFX

标签 java javafx relative-path fxml image-loading

我正在开发一个可移植桌面应用程序,并且 UI 使用某些图像。我的应用程序的绝对路径是:C:/Users/JP/Documents/EOL/Collection/DataCollection/src/application/

我的 fxml 和主类源文件位于应用程序文件夹(上面指定)中,应用程序文件夹内的“images”文件夹中有 3 个图像。全部都是 .jpg 文件。当我使用相对路径在 fxml 文件中引用这些文件时,1 个文件被加载,而另外两个文件则没有加载。

我不知道为什么一个特定文件可以加载,而其他文件却无法加载。

当我在 fxml 的所有三个位置引用该文件时,它工作正常。当我用绝对路径引用所有 3 个不同的图像时,它工作得很好。但我不理解仅涉及几个文件的相对路径的问题。谁能帮我解决这个问题吗?

我也尝试过用“file:”替换“@”,但没有帮助。

<ImageView fitHeight="333.0" fitWidth="450.0" opacity="0.27">
    <image>
         <Image url="@images/ht.jpg" />
    </image>
</ImageView>
<ImageView fitHeight="70.0" fitWidth="68.0" layoutX="5.0" layoutY="7.0">
    <image>
        <Image url="@images/eol.jpg" />
    </image>
</ImageView>
<ImageView fitHeight="103.0" fitWidth="162.0" layoutX="78.0" layoutY="-9.0" preserveRatio="true">
    <image>
        <Image url="@images/eol2.gif" />
    </image>
</ImageView>

最佳答案

我已经找到了这个问题的答案,显然你需要在相对 URL 中包含项目的完整类路径。

例如,如果我的 FXML 文件位于以下包中:

com/dscalzi/testproject/ui/MyFXML.fxml

我的图像位于以下包中:

com/dscalzi/testproject/ui/assets/myimage.png

正确的相对路径是:

<Image url="@/com/dscalzi/testproject/ui/assets/myimage.png" />

看来 fxml 使用完整的类路径加载图像。

关于java - 某些图像未使用相对路径加载 - JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26819788/

相关文章:

java - 使用 Joda 的 DateTimeFormatter 解析时如何忽略时区?

java - 如何在 spring 中使用 IN 子句执行查询?

arraylist - 来自 List 的 javafx tableview 数据

JavaFX : StackPane Sequential Transition

anchor - 复制和粘贴时如何处理 contenteditable 中的 URL 相对/绝对 "glitch"

java - Android - 可以将@IntDef 值放在@interface 中吗?

Java:抛出和捕获异常以验证输入的正确方法

java - javafx 中问卷面板的结构

vim - 显示 Vim 与父文件夹的相对路径

angular - Angular 中 Assets 的动态位置