图片无论如何都无法加上。无论图片放在什么地方。
目前放在package的目录中,就是和.java放在一个目录中,还是加载不上去。
直接写途径也不行,请高手看看是怎么回事?谢谢。
package draw_resource;
import java.awt.*;
import java.net.URL;
import javax.swing.*;
public class DrawImage extends JFrame {
Image img;
public DrawImage() {
URL imgUrl = DrawImage.class.getResource("img.jpg");
img=Toolkit.getDefaultToolkit().getImage(imgUrl);
this.setSize(440, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(new CanvasPanel());
this.setTitle("Image");
this.getContentPane().setBackground(Color.BLUE);
}
public static void main(String[] args) {
new DrawImage().setVisible(true);
}
class CanvasPanel extends Canvas {
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(img, 0, 0, this);
}
}
}
提示:
Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(Unknown Source)
at sun.awt.image.URLImageSource.getDecoder(Unknown Source)
at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
at sun.awt.image.ImageFetcher.run(Unknown Source)

解决方案 »

  1.   

    如果是在eclipse里,默认路径是项目根目录。如果是命令行,则是命令行提示的那个目录。
    可以用System.getProperty("user.dir")获取当前工作目录
      

  2.   

    img = Toolkit.getDefaultToolkit().getImage("f:/test/img.jpg");
    Swing的相对路径我也不会用,我只用过Applet的相对路径,我试着改成了绝对路径,可以显示图片,建议楼主用用绝对路径……
      

  3.   

    资源的根目录要加到Classpath里。
      

  4.   


    DrawImage.class.getResource("img.jpg");这样写就要求img.jpg必须在DrawImage.class同一目录。把img.jpg与DrawImage.java放到一个目录,编译后自然与class在一个目录。
      

  5.   

    xxx.class.getResource(some_resource);是在classpath里寻找。就是说some_resource所在的目录要添加到classpath里。
    比如lz 的img.jpg放在 images 目录下:javac -classpath some-library;images YourJavaFile.javajava -classpath some-library;images;. YourJavaFile
      

  6.   

    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);