java - 应用程序在构建时丢失图像

标签 java image swing

对于我正在进行的项目,我制作了一张宾果卡。基本功能是随机生成卡片并在 STD 输出以及我手工制作的 Swing GUI 中显示。此应用程序中有多个 java 文件。

BingoFinal.java - 主文件。这是程序运行时运行的内容。 Bingo_Card.java - 创建宾果卡,将其打印为 STD,并检查宾果游戏 BingoBG.java - 使用 2D 图形绘制 GUI 的背景 DrawBingoCard.java - 调用 BingoBG 并创建 25 个带有棋盘值的标签。当Bingo_Card找到匹配的号码(STD IN输入)后,不再打印号码,而是打印Chip.png(和java文件在同一个包文件夹下),一张宾果筹码图片,让它看起来像被覆盖了。

当我通过 NetBeans 运行它时,它可以完美运行,但是当我清理并构建它,然后在终端中运行 jar 时,除了显示宾果筹码图像外,一切正常。有人知道为什么会这样吗?

编辑:这是我加载图像的方式

ImageIcon chip; //declare ImageIcon
chip = new ImageIcon("chip75.png"); //define it as chip75.png. It is stored in package folder
JLabel B1Chip; //declare empty Label
B1Chip = new JLabel(chip); //define the Label with just the ImageIcon
B1Chip.setBounds(22, 112, chip.getIconWidth(), chip.getIconHeight()); //place at (22,112)
frame.add(B1Chip, null); //Add to frame

最佳答案

您应该使用以下方式访问图像:

ImageIcon chip = new ImageIcon(ClassName.class.getResource("/chip75.png"))

更多信息可以在 info page 上找到的 tag: embedded-resourceinfo-page 链接中提到了有关将 images 添加到 NetBeans 项目的详细答案。

更重要的是,明智的做法是使用 ImageIO.read ,因为如果出现问题,它至少会通过抛出 IOException

让您知道
Throws:

IllegalArgumentException - if input is null.
IOException - if an error occurs during reading.
另一方面,

ImageIcon 将隐藏 exception(如果有的话):-)

关于java - 应用程序在构建时丢失图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18506188/

相关文章:

java - 通过 TicTacToe 按钮创建一条线

java - ARCore TransformableNode 拖动后将 localPosition 设置为 [x=0.0, y=0.0, z=0.0]

java - 要执行的最大任务数

java - Android:4.0 ICS 上奇怪的 openStream

java - Android aChartEngine 条形图不工作

image - 如何通过可视化设置轮播图片的大小

android - 在 webview 中缩放图像以适应父布局高度,因此默认情况下没有滚动。 (安卓)

xcode - 在 Xcode 项目中添加图像时出现黑色背景

java - 单击旁边的图标,删除 JCombobox 下拉列表中的项目

java - 为什么我的 JFrame 不响应鼠标和窗口更改?