学习Java中难免会遇到路径问题,其中绝对路径和相对路径就很容易搞混淆。。。。
ImageIcon icon = new ImageIcon("logo.jpg");
执行结果是icon无法显示
如果类中有如下调用:
ImageIcon icon = new ImageIcon("logo.jpg");
很自然地认为当前类文件和图片在同一路径下即可。
其实所谓的相对路径起点是工程的根目录,即project。
这行代码执行时在project目录下查找名为logo.gif
的文件,结果当然是找不到。
要得到工程的相对路径可通过 System.getProperty("user.dir")
得到。
对图片和对文件的查找应该是一致的,如new File()
。
你的图片文件放在:JavaProject/src/images/logo.jpg
所以正确的调用是(不要加JavaProject):
ImageIcon icon = new ImageIcon("src/images/logo.jpg");
你的图片文件在:JavaProject/src/cn.fkomm/logo.jpg
所以正确的调用是(cn.fkomm
是包名)
ImageIcon icon = new ImageIcon("src/cn/fkomm/logo.jpg");
这行代码执行时在project/test
目录下查找到了文件
总结:相对路径就是相对于工程根目录的位置
查看了一下ImageIcon
的构造函数。
Public ImageIcon(String filename)//参数可以是绝对路径也可以是相对路径
Public ImageIcon(URL url)
第一种构造不再讲解。
第二种是通过URL来得到图片
URL url = getClass().getResource("logo.gif"); //当前编译后class文件所在目录查找
ImageIcon icon = new ImageIcon(url);
ImageIcon支持GIF、JPG、PNG等格式。