【问题标题】:JAVA FX ImageView only loads certain images when launchedJAVAFX ImageView 仅在启动时加载某些图像
【发布时间】:2018-09-29 23:11:42
【问题描述】:

我目前正在开发一个有趣的扑克应用程序,但在尝试使用 imageviews 时遇到了另一个问题。

现在我的图像结构如下: JavaFXApplication1\src\images

“images”文件夹包含另外两个文件夹,一个是“cards”,另一个是“playerImages”。 这也是它的截图:project structure

目前我在场景构建器中使用文档相对路径来初始加载每个卡片和玩家的图像。对于每张卡片,图像路径最初是在 scenebuilder 中设置的“@..\images\cards\back.png”。此方法在启动应用程序时效果很好。但是,对于卡片旁边的玩家图像,例如,我有“@..\images\playerImages\player1.png”,但由于某种原因这不起作用。

在场景构建器中,“player1.png”图像会显示在它应该出现的位置,但当我启动所有内容时就会消失。

我通读了Images not showing on launch by the main, but showed on Scene builder,但我不确定解决方案对我来说是否相同,因为我的图像位于我的源文件夹中。

我尝试使用 fx:id 并在我的控制器类中手动设置图像,但收到一条错误消息,指出我的输入流为空。

我还尝试将“player1.png”添加到我的根图像文件夹并使用该路径,但这仍然不起作用。然而,当我将 player1 图像路径更改为卡片文件夹中的任何内容时,它可以工作。我不明白为什么它适用于卡片文件夹中的图像,但不适用于 playerImages 文件夹中的图像。这两个文件夹位于同一位置。

如果这已经在其他地方得到了回答,我很抱歉,我太健忘而没有看到它,但是任何对这个看似简单的问题的见解将不胜感激。

【问题讨论】:

    标签: javafx imageview


    【解决方案1】:

    如果您有类似的项目结构:

    --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: 应该被标记为resources root

    【讨论】:

    • 感谢您的回复。实际上我最初一直在使用这种方法。我不知道为什么,但它似乎只适用于某些图像。我从谷歌下载了一堆不同的图片以供交替使用,只有一张有效。它们都是 .png,但大小和宽度各不相同。我从有效的图像中尝试了更大和更小的图像,但我无法弄清楚为什么它们不能正常工作。那些工作的人有什么特别之处?
    • 当我将路径传递给可以运行的图像时,代码会执行并更改图片,但是当我尝试任何其他图像时,我会收到 java.lang.NullPointerException: Input stream must not be null 错误,但我passign的文件名是正确的,并且在scenebuilder中,图片在那里。只有在执行时,它们似乎才会消失。
    • 我想我明白了。在netbeans中,手动展开图像文件夹后,我注意到有效的文件名存储为“player1.png”,其中所有其他图像都存储为“player#.PNG”。我不知道文件名 extension 是大写还是小写很重要,因为我以前从未遇到过这个问题。
    猜你喜欢
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多