用画笔工具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);
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文件一样)。