【问题标题】:How to access an image in a different folder?如何访问不同文件夹中的图像?
【发布时间】:2012-05-17 05:34:56
【问题描述】:

如何在 Java 中访问不同文件夹中的图片?我有一系列图片,它们会根据用户输入而变化,这就是 x 的用途。

picture.setIcon(new ImageIcon("\\resources\\icons\\pictures\\"+x+".png"));

图像位于资源/图标/图片中(来自 .class 文件),但上面的代码不起作用。 x 的值不是问题,因为它可以正常工作。我是否以正确的方式调用图片?

【问题讨论】:

  • 图片位于类路径/文件系统的其他位置

标签: java image embedded-resource


【解决方案1】:

我对图片的调用方式正确吗?

可能不会。如果它们是(嵌入的)应用程序资源,它们通常位于 Jar 中,并且通过 ImageIcon 的基于 String 的构造函数不可用(它期望 String 等于 File 路径)。

对于嵌入式资源,请通过URL 访问它们。

URL urlToImg = this.getClass().
    getResource("/resources/icons/pictures/"+x+".png");
picture.setIcon(new ImageIcon(urlToImg));

【讨论】:

    【解决方案2】:

    我相信你应该使用正斜杠而不是反斜杠。

    new ImageIcon("/resources/icons/pictures/"+x+".png")
    

    这是表示资源文件路径的标准 Java 跨平台方式。它仍然适用于 Windows - Java 运行时库为您处理转换。

    【讨论】:

      【解决方案3】:

      图像位于(来自 .class 文件)资源/图标/图片中

      这是个问题。系统不关心类文件在哪里,而是从哪里调用程序。

      通过命令行指定资源文件夹,

      java -jar myJar.jar C:\\home\\of\\the\\images 
      

      或通过属性

      java -jar myJar.jar -DImageHome=/foo/bar/images 
      

      或从属性文件中是最灵活的。

      如果你喜欢将图片放入jar中,使用安德鲁斯的建议,getClass().getRessource("...");

      顺便说一句:我肯定知道,正斜杠是可移植的。反斜杠,afaik,不是。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-04
        • 2012-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多