Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何设置图像图标的正确路径?_Java_Path_Imageicon - Fatal编程技术网

Java 如何设置图像图标的正确路径?

Java 如何设置图像图标的正确路径?,java,path,imageicon,Java,Path,Imageicon,我真的非常感谢您的帮助: 我当前的场景:每次尝试加载时,我都会遇到一个错误: jPanel、jFrame、jInternalFrame或任何其他java组件(java.swing.组件)。如果我在面板中加载像这样的ImageIcon集(如下所述),我会得到一个NullPointerExection,因为它找不到字符串中提供的图像路径下的图像 注意:我的IDE是Oracle的JDeveloper11G 私有ImageIcon image1=新的ImageIcon(getClass().getRe

我真的非常感谢您的帮助:

我当前的场景:每次尝试加载时,我都会遇到一个错误: jPanel、jFrame、jInternalFrame或任何其他java组件(java.swing.组件)。如果我在面板中加载像这样的ImageIcon集(如下所述),我会得到一个NullPointerExection,因为它找不到字符串中提供的图像路径下的图像

注意:我的IDE是Oracle的JDeveloper11G


私有ImageIcon image1=新的ImageIcon(getClass().getResource(path

格式1:

“.\\src\\Image\\add.png”“\\src\\Image\\add.png”“\\src\\Image\\add.png”

(我意识到:[”。\\src\\Image\\add.png“]对我所在学院的几乎所有人都有效,如果我运行的项目不是我自己开发的,它就可以正常工作,否则它就会失败。)

格式2:

“.\\Image\\add.png”“\\Image\\add.png”“\\Image\\add.png”

格式3:

“.\\add.png”“\\add.png”“\\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”“/add.png”



提前感谢您的帮助

图像图标不是您的问题。关键是
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的根
  • 表示类的位置。在本例中,这是罐内的
    c/d/
  • 没有记录
如果使用
\\
/
作为分隔符,在Windows上并不重要。在所有其他情况下,您必须使用
/


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

我刚刚找到了图像图标的正确路径,谢谢大家的评论。我真的很感激

简短回答:

根据我之前描述的场景,Sting中正确的路径必须是“/Image/add.png”“/package\u folder/file.png”

图像文件必须放置在App\u Folder\Project\classes\package\u name中,但也应显示在App\u Folder\Project\src\package\u name“中(如果添加任何新图像,可以替换文件夹)

截图 为了更好的理解

在本场景中,代码总结如下:

ImageIcon image1=新的ImageIcon(getClass().getResource(“/Image/add.png”)


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

JDeveloper在包和类的位置查找映像文件。 这是App\u Folder\Project\classes\package name。如果我们仔细观察结构是否在类中查找资源,这可能足以“获取” 但如果像我这样的人需要更多的提示,那就好了

我发现我的错误是: JDeveloper似乎有两个存储库而不是一个,或者它是包和类的一种备份。 因为对“source”的删节可以是src,我想,如果我把包中的文件放在src(source)中,并且Javadocs中基于路径的“/Image\u package/ImageFile.(type)”是正确的。为什么我要面对这个NullPointerException

今天我和我的老师在大学里检查了同样的细节,结果成功了,但是回到家里,我遇到了同样的错误,我开始查看其他文件来检查关于“班级”和“资源”的细节,所以我发现还有一个文件夹包含同样的包,但这个文件夹没有“更新”(如果我们这样描述的话)我在src中放置了新的图像。然后我粘贴了新的图像,重新打开开发人员,然后运行脚本。。。最后,Jframe出现了新图标

我希望这些细节能对某人有所帮助



你没有猜,你读过Class.getResource()的javadoc吗?嗨,对不起,我是一个编程新手,你能不能给我提供在线查看详细信息或任何文档的步骤,我只是在这个网站上找到了更多关于“Class.getResource()的javadoc”的问题。@JB谢谢。。。下面是您发布的链接(),如果我理解正确,我的案例中的路径应该是oracle文档中的路径:“/src/Image/add.png”如果我错了,请告诉我其他人,我会在Jdeveloper中检查它,看看这是否有什么不同。我已经确认图像位于正确的目录中,但对我来说很不幸“…getResource(“/src/Image/add.p