我正在开发一个可移植桌面应用程序,并且 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/