gpt4 book ai didi

java - 在 java 中使用 ImageIcon 类和 JLabels 创建 .jar 文件

转载 作者:行者123 更新时间:2023-12-02 11:38:52 24 4
gpt4 key购买 nike

我正在用 java 制作一款 Cluedo 棋盘游戏,当将其转换为 .jar 文件时,我无法显示图像。我将图像叠加在一起,所以我使用了 JLabels(new ImagIcon (".. ")) 就像这样。添加图像,现在当我创建 .jar 文件时看不到图像。只是想知道是否有任何方法可以在不大量编辑我的代码的情况下完成。我已经阅读了有关此问题的所有 stackoverflow 答案,但没有一个解决了这个特定问题。这是我在 Eclipse 中运行棋盘游戏时的样子。 enter image description here

当我将其转换为 .jar 文件时,它不再显示棋盘或任何玩家。

最佳答案

ImageIcon(String) 期望 String 值是对驻留在磁盘上的图像的"file"引用。

如果您已将资源外部化,那么您需要确保您使用的路径是正确的。请记住,执行 Jar 的“工作目录”并不总是与存储 Jar 的目录相同。

为此,通常建议将图像(和其他资源)“嵌入”到 Jar 本身中。这样,无论资源安装在何处,您都可以简单地执行资源查找。

每个 IDE 嵌入资源的方式略有不同,但基本上要求图像包含在 Jar 和特定位置/包中。

重要的一点是,当嵌入到 Jar 中时,资源不能再像"file"一样被引用,因为它们不是,它们是 Jar/Zip 存档的一部分,需要在不同的文件中引用。方式。

要加载嵌入资源,您需要使用Class#getResource,它返回一个URLClass#getResourceAsStream,它返回一个输入流

在大多数情况下,第一个就足够了。虽然 ImageIcon 确实需要 URL,但通常建议使用 ImageIO.read,请通读 Reading/Loading images了解更多详情。

这样做的好处有两个:

  1. 它会阻塞,直到读取图像,这意味着当方法返回时图像已完全实现
  2. 当图像无法读取时,它会抛出 IOException,这更有意义,因为 ImageIcon 会默默地失败

所以,所有这些都会累积成类似......

new JLabel(new ImageIcon(ImageIO.read(instanceOfMyAwesomeGameObject.getResource("/path/to/resource/ResourceName.png"))));

关于java - 在 java 中使用 ImageIcon 类和 JLabels 创建 .jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48724747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com