对于我正在进行的项目,我制作了一张宾果卡。基本功能是随机生成卡片并在 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-resource在 info-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/