URL gifURL = null;
     gifURL = getClass().getResource("images/person.gif");
    m_originalIcon = new ImageIcon(gifURL)
运行提示错误,nullpointerException;
但是如果改成:
    m_originalIcon = new ImageIcon("images/person.gif");
就可以了.这是为什么啊.

解决方案 »

  1.   

    你这是尝试对空对象的访问异常,要导入图片的话不如直接IconImage ii=new IconImage("你的路径");
    这样不更好些吗?
      

  2.   

    Listen:new ImageIcon("images/person.gif");
    相当于new File("images/person.gif");里面的images/person.gif是一个相对路径,文件读取时这个相对路径是从程序所在目录开始的。换句话说是classes或者exe所在目录开始往下取的。所以不会进入你的jar包或者classes里面。它是一个程序外部文件的读取方式。
    getClass().getResource("images/person.gif");
    这是读取程序内部资源的方法,他读取的位置是classes内部或者jar内部,和上面的完全不一样。BTW:
    getClass().getResource("images/person.gif");
    getClass().getResource("/images/person.gif");
    这两个也不一样,差别很大。差别在根目录上。第一个写法,没有"/",表示根目录是getClass()的类所在的目录(准确点叫做包),而第二种写法有"/",表示根目录是顶层包,一般是classes目录。
    明白了吗?
      

  3.   

    那就直接用m_originalIcon = new ImageIcon("images/person.gif");getResource()返回的是java.net.URL对象,然后你的new ImageIcon()两种做法所调用的构造函数是两个不同的方法,看看构造函数是否抛异常不就知道拉。
      

  4.   

    恩.有点明白了.
    多谢fool_leavel
    还有issgates
    呵呵,fool_leavel瞒精通的
      

  5.   

    构造函数ImageIcon()不支持URL类型的参数