我目前正在开发一个扑克应用程序,在尝试使用图像视图时遇到了另一个问题。
现在我的图像结构如下:JavaFXApplication1\src\images
该"图像"文件夹包含另外两个文件夹,一个是"卡片",另一个是"玩家图像"。 这里也是它的屏幕截图:项目结构
目前,我正在使用场景构建器中的文档相对路径来初始加载每张卡牌和玩家的图像。 对于每张卡片,图像路径最初为"@..\图像\卡片\返回.png",在场景生成器中设置。启动应用程序时,此方法非常有效。但是,对于卡片旁边的玩家图像,我有"@..例如,\images\playerImages\player1.png",由于某种原因这不起作用。
在场景构建器中,"player1.png"图像显示在应有的位置,但在我启动所有内容时消失。
我通读了主启动时未显示的图像,但在场景构建器上显示,但我不确定解决方案对我来说是否相同,因为我的图像在我的源文件夹中。
我尝试使用 fx:id 并在控制器类中手动设置图像,但收到一条错误消息,指出我的输入流为 null。
我还尝试将"player1.png"添加到我的根图像文件夹中并使用该路径,但这仍然不起作用。 但是,当我将 player1 图像路径更改为卡片文件夹中的任何内容时,它可以工作。我不明白为什么它适用于卡片文件夹中的图像,但不适用于 playerImages 文件夹中的图像。这两个文件夹位于同一位置。
如果这个问题已经在其他地方得到了回答,我很抱歉,而且我太忘乎所以看不到它,但对这个看似简单的问题的任何见解将不胜感激。
如果您有类似的项目结构:
--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);
当然目录"资源:被标记为资源根目录