2

我试图将本地目录中的图像加载到 ImageIcon(URL) 中。此图像文件从 .jar 文件访问。jar 文件名为 swingex.jar。项目结构如

F:/>SwingExample
         |
         |___src
         |
         |___build.xml
         |
         |___lib
               |
               |___swingsex.jar(generated through build.xml file)
         |
         |__resource
                   |
                   |_____images
                            |
                            |___logo1.png

如何读取 logo1.png 文件?

我想喜欢这个

  1. file:///f://resources//images//processedimages//返回空

  2. ClassLoader.getSystemResource("resources/images/processedimages/");返回空

更新:- 我仍然有问题。因为我在 SwingExample 上创建了 jar 文件并排除了资源/图像目录。运行 jar 文件时,它无法识别资源/图像文件夹。但是我通过 eclipse 运行了 SwingExample 项目,它工作正常。代码是

File directory = new File (".");
Image img = null;
String path="";
URL url=null;
try {
  path=directory.getCanonicalPath()+"/resources/images/logo1.png";
               img = ImageIO.read(new File(getDefaultImageUploadPath());

} catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}
        return new ImageIcon(img);
4

3 回答 3

3
URL imgURL =
   new File( "F:/SwingExample/resource/images/logo1.png" ).toURI().toURL();

但我建议将资源放入 src。

如果资源在 src 中,您可以通过类加载器轻松访问它们。

getClassLoader().getResourceAsStream( "resource/images/logo1.png" );
于 2013-02-11T19:38:54.857 回答
1

根据应用程序的执行上下文,您可以使用相对路径

URL imgURL = new File( "resource/images/logo1.png" ).toURI().toURL();

或者

URL imgURL = new File( "../resource/images/logo1.png" ).toURI().toURL();

可能有效,但 Aubin 是正确的,将图像嵌入到应用程序中并通过类加载器上下文访问会更容易

于 2013-02-11T19:49:58.520 回答
0

对于 java 项目,默认目录总是从 src 开始。只有当您以下列方式组织资源时,您的代码才能正常工作...... :)

SwingExample
         |
         |___src
         |    |
         |    |_____resource
         |          |
         |          |_____images
         |                   |
         |                   |___logo1.png
         |___build.xml
         |
         |___lib
               |
               |___swingsex.jar(generated through build.xml file)

这次getClassLoader().getResourceAsStream( "/resource/images/logo1.png" );不会返回null。

于 2014-01-16T16:06:45.630 回答