【问题标题】:JavaFX Creating an Image and ImageViewJavaFX 创建图像和 ImageView
【发布时间】:2015-04-18 12:06:57
【问题描述】:

坚持基础。我在设置图像路径时遇到了一些语法问题。 当我尝试创建图像并为其提供图像路径时,它总是会引发一些关于路径的异常。我已经注释掉了一些我已经尝试过的路径组合。你能告诉我我做错了什么吗?谢谢。

包 jopofx;

public JoPoCTRL(JoPoFX gui){
    this.gui = gui;  
}

public void updateImages(){
    Image img = null;
    try{
        //img = new Image("C:\\Users\\ ... //FullPath ... \\JoPoFX\\src\\jopofx\\myimage.png");
        img = new Image("\\JoPoFX\\src\\jopofx\\myimage.png");
        //img = new Image("\\src\\jopofx\\myimage.png");
        //img = new Image("\\myimage.png");

    }catch(Exception e){
        System.out.println("error while creating image");
        e.printStackTrace();
    }

    try{
        gui.setImgV(img);
    }catch(Exception e){
        System.out.println("error while setting up the image");
    }        
}

这是打印出来的: 创建图像时出错 java.lang.IllegalArgumentException:无效的 URL:无效的 URL 或找不到资源 在 javafx.scene.image.Image.validateUrl(Image.java:990) 在 javafx.scene.image.Image.(Image.java:538)

【问题讨论】:

    标签: image javafx imageview


    【解决方案1】:

    Windows 平台上,用于放置在src/jopofx 内的图像:

    img = new Image("\\jopofx\\myimage.png");
    

    img = new Image("/jopofx/myimage.png");
    

    然后您可以使用以下方法创建 ImageView:

    ImageView imageView = new ImageView(img);
    

    此外,您还可以直接初始化ImageView,而无需通过以下方式初始化Image

    ImageView imageView = new ImageView("/jopofx/myimage.png");
    

    另外,请确保您使用的是导入 javafx.scene.image.Image;

    【讨论】:

    • 感谢您的回答宇智波鼬。由于某种原因,这些语法都不起作用。我在 /JoPoFX/src 和 JoPoFX/src/jopofx/ 文件夹中都有一个 myimage.png 文件。 (最后一个是运行代码的文件夹)如果您有任何其他建议,我很乐意听到它们?谢谢
    • 我忘了说。我确实已经导入了 javafx.scene.image.Image;
    • 嗨。我想我找到了解决办法。我不得不写“file:\\C:users\\.....\\myimage.png”,而不是输入路径。我的程序不再崩溃,但我还不能制作图像可见。所以目前还无法确定这是否有效。
    • 为位于项目内部的图像添加绝对路径不是一个好主意。此外,如果您将应用程序打包为jar 并尝试使用file: 加载图像,它将失败。我建议您发布您的项目结构的图片,以便我可以进一步帮助您。
    • 看起来我无法上传任何图片,因为我没有足够的“声誉”。这是我上传项目结构图像的链接。 --> users.metropolia.fi/~joonaen/openDir/projectStructure.png 实际上,当在 Image/ImageView 构造函数中键入“file:\C:\ ... \myimage.png”时,我从来没有让 ImageView 显示图像,但我确实设法让 ImageView 显示通过输入我上传照片的网站地址。但这不是我想要使用的最终解决方案...
    【解决方案2】:

    在我发布我的问题后不久,我从博客中找到了一个工作示例。 希望这个例子对某人有所帮助:

    InputStream stream = getClass().getResourceAsStream("images/"+imageName+".jpg");
    //"images/" is the a local directory where all my images are located
    Image newImage = new Image(stream); 
    imgV.setImage(newImage);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-05
      • 2016-07-23
      • 2018-03-12
      • 1970-01-01
      • 2016-08-29
      • 2014-05-09
      • 2018-07-19
      • 1970-01-01
      相关资源
      最近更新 更多