-3

我目前正在尝试将刽子手图像添加到我的JPanel. 我已标记图像 1-10 并在每次用户得到错误答案时增加值(这是有效的)。到目前为止,我还无法使图像正常工作。如何正确插入我的图像?

if(!found){
  numError++;

  String userError = Integer.toString(numError);
  String jpg = userError.concat(".JPG");
  try{
    BufferedImage myImg = ImageIO.read(new File(jpg));
    JLabel hangman = new JLabel(new ImageIcon(myImg));
    hangman.setSize(200,100);
    hangman.setLocation(300, 20);
    add(hangman);
  }catch(IOException ex){
    ex.printStackTrace();
  } 
}
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(ImageIO.java:1301)
at HangmanPanel$1.actionPerformed(HangmanPanel.java:73)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
...
4

2 回答 2

2

由于图像这将成为嵌入在 Jar 文件中的应用程序资源,因此必须通过 URL 访问图像。 查看嵌入的资源信息。有关如何形成该 URL 的概述页面。剩下的唯一棘手的事情是确定String要使用什么。

我将 .jpg 文件放在 src 和 bin 文件夹的主目录中。

好的,如果图像被称为hungman.JPG找到String它会是"/hungman.JPG"

特别注意

  1. /告诉类加载器从“类路径的根”搜索的前导。
  2. 名称的大小写必须完全正确。这对于 Windows 和实例无关紧要File,但对于 URL 总是如此。

注意: 通过 URL 访问图像可以在 Jar 中工作或者只要图像位于应用程序的运行时类路径上。所以即使 IDE 没有自动 Jar 类和资源,它应该仍然可以工作。

于 2013-05-14T15:03:44.257 回答
1

尝试使用 jpg 的 url 直接创建 imageIcon。然后
JLabel hangman = new JLabel(new ImageIcon(urlOfImageFile));

于 2013-05-14T14:20:33.820 回答