凉水不好喝 2021-09-27 16:59 采纳率: 42.1%
浏览 73
已结题

为什么用getImage(fileName)方法导入图片会失败?使用这种方法需要注意什么?(经验总结)

用画笔工具paint()方法,给窗口导入图片,用下面描述的部分代码,图片不能显示(对应jar包和图片路径没有错误),而且保存以后文件没有报错,求解决:


Image select=Toolkit.getDefaultToolkit().getImage("images/selecttank.gif");
g.drawImage(select, 160, y, null);

我之后在网上查了查,他们也有人遇到这样的问题,但是没有说明原因,只是把代码改成这样就能正常显示图片了,事实也正是这样,我的改完后也能正常显示了,但不知道究竟为什么?感觉是不是getImage()方法使用方法不太对?

    Image select=Toolkit.getDefaultToolkit().getImage(GamePanel.class.getClassLoader().getResource("images/selecttank.gif"));
g.drawImage(select, 160, y, null);

  • 写回答

1条回答 默认 最新

  • stacksoverflow 2021-09-27 19:02
    关注

    Image select=Toolkit.getDefaultToolkit().getImage("images/selecttank.gif");
    上面的这种写法最好是绝对路径, 相对路径的话,按你的启动位置来加上后面的路径来找gif文件。
    只能找操作系统级别的文件,jar包里面的找不到(就像你无法用路径方式访问jar包里的class文件一样)。


    Image select=Toolkit.getDefaultToolkit().getImage(GamePanel.class.getClassLoader().getResource("images/selecttank.gif"));
    这个方法用classLoader可以加载jar包里面的资源(就像classloader可以加载jar包里的class文件一样)。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月18日
  • 创建了问题 9月27日