2014-11-08 46 views
1

我正在开发便携式桌面应用程序,并且UI使用某些图像。我的应用程序的绝对路径是:C:/ Users/JP/Documents/EOL/Collection/DataCollection/src/application/某些图像未获取相对路径 - JavaFX

我在应用程序文件夹(上面指定)中有我的fxml和主类源文件,应用程序文件夹内的“图像”全部是.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> 
+0

您是否在使用Scenic Builder 2.0?如果是这样,当你用它打开fxml文件时,你看到三个图像了吗?如果您不这样做,请尝试从Inspector选项卡的属性 - >图像中加载它们,浏览。保存并关闭,然后再次运行应用程序。 – 2014-11-08 17:28:25

+0

是的。我正在使用场景生成器2.0。我看到场景构建器中的所有图像,但是当我从java代码运行它时,我没有看到它们中的一个。也尝试从检查器选项卡加载。没有运气! – 2015-01-27 13:41:55

+0

我真的不知道发生了什么,没有看到你的代码。在运行应用程序时,您可以尝试使用[Scenic View](http://fxexperience.com/scenic-view/),并查看“ImageView”节点下显示的内容。你使用什么容器?也许他们被加载,但在你看到的或在可见场景之外的后面...... – 2015-01-27 13:49:34

回答

0

我已经找到了答案这个,aparrently你需要包括你的项目在相对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使用完整的类路径加载图像。