我在java中制作了一个Cluedo桌面游戏,当将它转换为.jar文件时,我无法显示我的图像。我将图像添加到另一个上面,所以我使用了JLabels(新的ImagIcon(“.. “))就像这样。要添加图像,现在创建.jar文件时无法看到图像。只是想知道如果没有编辑我的代码有很多方法可以做。我已经阅读了关于这个问题的所有stackoverflow答案,但没有一个解决了这个特殊问题。这是我在Eclipse中运行时的棋盘游戏。
当我将其转换为.jar文件时,它不再显示棋盘或任何播放器。
答案 0 :(得分:1)
types.h
期望ImageIcon(String)
值为" file"引用驻留在磁盘上的图像。
如果您已将资源外部化,则需要确保所使用的路径正确无误。请记住,"工作目录"执行Jar的内容并不总是与Jar存储的目录相同。
为此,它通常建议"嵌入式" Jar本身内的图像(和其他资源)。这样,您可以简单地执行资源查找,无论其安装在何处。
每个IDE嵌入资源的方式略有不同,但它基本上要求图像包含在Jar和特定的位置/包中。
一个重要的注意事项,当嵌入到Jar中时,资源不再被引用,就像它们"文件",因为它们不是,它们是Jar / Zip存档的一部分,需要以不同的方式引用。
要加载嵌入式资源,您需要使用String
,它会返回Class#getResource
或URL
,返回Class#getResourceAsStream
。
在大多数情况下,第一个就足够了。虽然InputStream
确实需要ImageIcon
,但通常建议您使用URL
,请仔细阅读Reading/Loading images以获取更多详细信息。
这样做的好处有两个方面:
ImageIO.read
,这会更有意义,因为IOException
无声地失败所以,所有这些都会累积到类似的......
ImageIcon
答案 1 :(得分:0)
我认为它来自你的图像的路径。源的图像路径可能与.jar
不同