我目前正在开发一个有趣的扑克应用程序,在尝试使用imageviews时,我遇到了另一个问题。
现在,我的图像结构如下: JavaFXApplication1\src\images
那个“图像”文件夹包含另外两个文件夹,一个是“卡片”,另一个是"playerImages“。这也是它的屏幕截图:project structure
目前,我正在使用场景构建器中的文档相对路径来初始加载每个卡和玩家的图像。对于每一张卡,图像路径最初是在scenebuilder中设置的"@..\images\cards\back.png“。此方法在启动应用程序时运行得非常好。然而,对于卡片旁边的玩家图像,我有"@..\ images \playerImages\player1.png“,但由于某些原因,这不起作用。
在scenebuilder中,"player1.png“图像显示在它应该显示的位置,但当我启动所有内容时,它就消失了。
我通读了Images not showing on launch by the main, but showed on Scene builder,但我不确定解决方案对我来说是相同的,因为我的图像在我的源文件夹中。
我尝试使用fx:id并在我的控制器类中手动设置图像,但收到一个错误,指出我的输入流为空。
我还尝试将"player1.png“添加到我的根图像文件夹中,并使用该路径,但仍然不起作用。但是,当我将player1图像路径更改为卡片文件夹中的任何内容时,它都可以正常工作。我不明白为什么它适用于卡片文件夹中的图像,而不适用于playerImages文件夹中的图像。这两个文件夹都在同一位置。
如果这个问题已经在其他地方得到了回答,并且我太健忘了,我很抱歉,但是对这个看似简单的问题的任何见解都将非常感谢。
发布于 2018-09-30 07:30:02
如果您有类似的项目结构:
--main
--java
--src
--resources
--images
--cards
back.png
--players
player1.png
您可以在java代码中设置来自资源的图像。但是你需要使用getResources()
例如:
@FXML
private ImageView imageView;
Image image = new Image(getClass().getResourceAsStream("/images/players/player1.png"));
imageView = new ImageView(image);
当然,目录" resources : shuild“被标记为资源根目录
https://stackoverflow.com/questions/52573289
复制相似问题