一、问题
ImageIcon icon = new ImageIcon("a.gif");
执行结果是icon无法显示
二、解决
类中有如下调用:
ImageIcon icon = new ImageIcon("a.gif");
很自然地认为当前类文件和图片在同一路径下即可。
其实所谓的相对路径起点是工程的根目录,即project。
这行代码执行时在project目录下查找名为a.gif的文件,结果当然是找不到。
假如你的工程根目录为:project1
你的图片文件放在:project1/src/images/a.gif
所以正确的调用是:
ImageIcon icon = new ImageIcon("src/images/a.gif");
这行代码执行时在project目录下查找到了文件,当然也可以写成
ImageIcon icon = new ImageIcon("./src/images/a.gif");
注意两者的区别,要记住的是src是在project下的目录
总结起来就是一句话:所谓相对路径就是相对于工程根目录的位置^_^
三、其他
查看了一下ImageIcon的构造函数。
Public ImageIcon(String filename)//参数可以是绝对路径也可以是相对路径
Public ImageIcon(URL url)
第二种通过URL来得到图片
URL url = getClass().getResource("a.gif"); //当前编译