【问题标题】:Image with use in javafx application [duplicate]在 javafx 应用程序中使用的图像 [重复]
【发布时间】:2017-01-24 19:31:00
【问题描述】:

当我出于某种原因尝试制作图像时,我的路径不起作用,我不知道为什么。我必须改用 ImageView 吗?

Image planetPicture = new Image("/Users/rizins/Desktop/earth.gif");

我得到了错误

原因:java.lang.IllegalArgumentException: Invalid URL: Invalid URL or resource not found

在 javafx.scene.image.Image.validateUrl(Image.java:1089)

非常感谢任何有关如何解决此问题的想法,或提供其他帖子的链接。

【问题讨论】:

    标签: java image javafx


    【解决方案1】:

    图像构造函数需要一个 URL,而您没有提供协议,因此您需要传递 "file:/Users/rizins/Desktop/earth.gif"

    【讨论】:

    • 在这种情况下可以使用,但在一般情况下,仅在文件名前添加“file:”是足够的,因为并非所有在文件名在 URL 中有效。 (我不是在批评你,我之所以提到它,是因为我看到这个确切的错误犯的次数比我数的要多,包括在很多 Stack Overflow 帖子中。)
    • 哇,我简直不敢相信我忘了这样做......但再次感谢你,这正是我想要的!
    【解决方案2】:

    这就是您引用图像的方式。这也取决于您是否使用 IDE 等。这对我在 Netbeans 中有用...

    如果你的目录结构看起来像

    src/
    ├── yourclass
    │   ├── YourClass.java
    └── images
        ├── Image-1.png
        ├── Image-2.png
    

    然后像

    Image myImage=new Image(YourClass.class.getClass().getResource("/images/Image-1.png").toString());
    ImageView imgView=new ImageView();
    imgView.setImage(myImage);
    

    应该适合你....

    【讨论】:

    • 最后两行可以写成ImageView imgView = new ImageView(myImage);
    • 确实如此。但是我是从上学期做的一些作业中复制/粘贴的,将我的引用从数组更改为直接对象而不是将行合并在一起更容易......
    • 所以我想让你知道这确实有效,但我正在实现一个精灵类,它必须使用图像变量而不是 imageView,因为它使用 graphicsContext 和画布库,但这也适用于其他项目的文件结构,谢谢
    猜你喜欢
    • 2018-08-18
    • 2013-12-27
    • 1970-01-01
    • 2018-06-02
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 2021-06-27
    相关资源
    最近更新 更多