如何为ImageIcon设置正确的路径?

时间:2015-10-20 18:24:44

标签: java path imageicon

我真的很感激一些帮助:

我当前的情况:我每次尝试加载时都遇到错误: jPanel jFrame jInternalFrame 任何其他java组件(java.swing。组件。如果我使用像这样的ImageIcon设置加载我的面板(如下所述),我会得到一个nullpointerexeption,因为找不到图像与String中提供的图像路径。

注意:我的IDE是Oracle的JDeveloper 11G。

私有ImageIcon image1 = new ImageIcon(getClass()。getResource( path ));

格式1:

  

" .. \\ src \\ Image \\ add.png" "。\\ src \\ Image \\ add.png& #34; " \\ src \\ Image \\ add.png"

(我意识到这一点:[" .. \\ src \\ Image \\ add.png" ]适用于我大学的几乎每个人,如果我运行任何项目这不是我自己开发的,它可以正常工作,否则会失败。)

格式2:

  

" .. \\图片\\ add.png" "。\\ Image \\ add.png" " \\ Image \\ add.png"

格式3:

  

" .. \\ add.png" "。\\ add.png" & #34; \\ add.png"

格式4:

  

" ../ src / Image / add.png" " ./ src / Image / add.png" " /src/Image/add.png"

格式5:

  

" ../ Image / add.png" " ./ Image / add.png" " /Image/add.png"

格式6:

  

" ../ add.png" " ./ add.png" &#34 ; /add.png"

提前感谢您提供任何帮助

2 个答案:

答案 0 :(得分:0)

ImageIcon不是你的问题。关键是getClass().getResource(),它从同一个源加载文件,因为java也读取类文件。

换句话说:如果您的类路径是-cp .或任何其他目录,getResource()也将从那里加载相对于给定目录的文件("。"是当前目录)

如果你的类路径是.jar文件,那么路径就是这个jar中查找,而不是其他地方。

现在,在给出类路径为/ a / bin并且您的类为c.d.E的路径中:

  • /是根。不是文件系统的根,而是类路径的根。在此示例中,这是/a/bin/
  • .表示班级的位置。在示例中,这是/a/bin/c/d/
  • ..表示后退一步,即/a/bin/c/。这是有效的,因为Java要求文件系统提供路径/a/bin/c/d/../

如果路径是.jar文件而您的班级是c.d.E

  • /是jar的根。
  • .表示班级的位置。在示例中,这是jar中的c/d/
  • ..未记录

如果您使用\\/作为分隔符在Windows上无关紧要。在所有其他情况下,您必须使用/

现在,我希望我没有包含错误......

答案 1 :(得分:0)

我刚刚找到了ImageIcon的正确路径,谢谢大家的意见。我真的很感激。

简答:

基于我之前描述的情景 Sting中正确的 路径 必须 & #34; /Image/add.png" " /package_folder/file.png"

图像文件必须放置在 App_Folder \ Project \ classes \ package_name 中,但也应显示在 中" App_Folder \ Project \ src \ package_name" (如果添加任何新图像,可以替换文件夹)

截图 AppFolderProject以便更好地理解

总结一下这个场景中的代码是:

  

ImageIcon image1 = new ImageIcon(getClass()。getResource(" / Image / add.png"));

根据我的理解,这是我谦虚的解释

JDeveloper在包和类的位置查找图像文件。 这个是App_Folder \ Project \ classes \包名。如果我们仔细观察结构是否正在寻找课堂上的资源,这可能就足以让它得到它。 但如果像我这样的其他人需要更多提示,那就可以了。

我发现我的错误是这个: 似乎JDeveloper有两个存储库而不是一个存储库,或者它是包和类的一种备份。 由于来源"来源"可以是src,我想,如果我将文件放在src(source)中的包中,而基于Javadocs的路径是" / Image_Package / ImageFile。(type)"是正确的。为什么我要面对这个NullPointerException?

我今天和我的老师一起检查了相同的细节并且它有效,但回到家我遇到了同样的错误,我开始查看其他文件以查看有关" class"和"资源"所以我发现那里有另一个包含相同包的文件夹,但是这个包没有更新" (如果我们这样描述的话)我把新图像放在src中。然后我粘贴了新的图像,重新打开了开发人员并运行了脚本......最后,Jframe出现了新的图标。

我希望这些细节可以帮助别人。