我在编写坦克大战的时候,最开始用的是这样的方式初始化图片的
 
image1 = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/images/bomb_1.gif"));
image2 = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/images/bomb_2.gif"));
image3 = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/images/bomb_3.gif"));
程序基本没有什么问题,但是在消灭第一辆坦克的时候,没有爆炸效果后来改用如下方式
try
{
image1 = ImageIO.read(new File("/images/bomb_1.gif"));
image2 = ImageIO.read(new File("/images/bomb_2.gif"));
image3 = ImageIO.read(new File("/images/bomb_3.gif"));
}
catch (Exception e)
{
e.printStackTrace();
}
运行倒是没问题,但是就是爆炸效果出不来
出现如下提示:
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at game.tank.Mypanel.<init>(DrawTank.java:73)
at game.tank.DrawTank.<init>(DrawTank.java:18)
at game.tank.DrawTank.main(DrawTank.java:33)请告诉我这到底是怎么回事儿,该怎样处理
谢谢!!!!

解决方案 »

  1.   

    最好的读图片的方式还是ClassLoaderimage1 = ImageIO.read(ClassLoader.getSystemResource("images/bomb_1.gif"));注意这里前面少一个 “/” 号前面一个程序:第一个坦克没爆炸,应该是逻辑问题后面一个程序:出错,是读图片的方法中路径写的不对
      

  2.   

    请问用ClassLoader加载速度比较快么?jvm原理?
      

  3.   


    用你的方法得到解决,但是我有几个疑问,
    1、你说前面一个程序:第一个坦克没爆炸,应该是逻辑问题;到底是什么逻辑问题,能不能说的详细一点
    2、后面一个程序:出错,是读图片的方法中路径写的不对,那么路径该怎样写呀?我实在src下面建的images这个文件夹,3张图片都在这个文件夹下,
      

  4.   

    用file的getAbsolutePath() 看看两者路径的区别
      

  5.   

    这个帖子不是发过吗?不是图片加载的问题,要不你再修该显示图片后调用xxx.repaint()重绘一下试试。
      

  6.   


    我换了一种方法来读取图片
    但是他们说我的路径写错了
    我实在搞不懂哪里写错了,(我就是在src下面建的一个文件夹,3张图片放了进去)还请高手来指导
      

  7.   


    很简单,搞个绝对路径撒
    从盘符开始写起:
    image1 = ImageIO.read(new File("c:/.../.../.../src/images/bomb_1.gif"))
    ...自己填
      

  8.   


    这样写对了,
    我还有疑问
    image1 = ImageIO.read这个方法
    为什么要把src这个目录也带上,而image1 = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/images/bomb_1.gif"));
    这个方法不用带src这个目录