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

时间:2013-08-29 08:46:28

标签: java image swing

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

BingoFinal.java - 主文件。这是程序运行时运行的。 Bingo_Card.java - 创建Bingo卡,将其打印到STD,并检查宾果 BingoBG.java - 使用2D图形绘制GUI的背景 DrawBingoCard.java - 调用BingoBG并使用板值创建25个标签。当Bingo_Card找到匹配的号码(由STD IN输入)时,它不再打印该号码,并打印Chip.png(与java文件位于同一个包文件夹中),一个宾果芯片图像,使其看起来被覆盖。 / p>

当我通过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

2 个答案:

答案 0 :(得分:3)

您应该使用以下网址访问images

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

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

更重要的是,使用ImageIO.read是明智的,因为至少它会让你知道,如果出现问题,可以抛出IOException

Throws:

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

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

答案 1 :(得分:0)

将图像文件复制到jar中或提供图像文件的绝对路径