我真的很感激一些帮助:
我当前的情况:我每次尝试加载时都遇到错误: 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"
提前感谢您提供任何帮助
答案 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" (如果添加任何新图像,可以替换文件夹)
总结一下这个场景中的代码是:
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出现了新的图标。
我希望这些细节可以帮助别人。