public class ImageExample2 extends Applet
{
BufferedImage bi;
public void init ()
{
resize (500, 500);
try
{
BufferedImage bi = ImageIO.read (new File ("G:\\Java\\WhatDotColour\\Pacman.PNG"));
}
catch (java.io.IOException e)
{
e.printStackTrace ();
}
}
public void paint (Graphics g)
{
g.drawImage (bi, 20, 140, this); //.drawImage(in, 0, 0, null);
}
}
每次我尝试运行它时,它都会给我一个空指针异常。我该如何解决?
答案 0 :(得分:1)
不要将Applet
与File
混合。它们就像石油和油水。 Applet在浏览器中运行。始终使用相对路径。
使用Applet#getCodeBase()获取基本网址。这是包含此applet的目录的URL。
示例代码:(查看getCodeBase()方法的输出并修改图像路径)
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;
public class ImageExample2 extends Applet {
private Image bi;
public void init() {
resize(500, 500);
System.out.println(getCodeBase()); // file:/D:/Workspace/JavaProject/bin/
// This the actual code that should be used to read the image in Applet
bi = getImage(getCodeBase(), "images/222.png");
}
public void paint(Graphics g) {
g.drawImage(bi, 20, 140, this);
}
}
如果您使用的是Windows& Eclipse IDE然后查看下面显示的截图,以获取上面的示例代码图像路径。
答案 1 :(得分:0)
变化:
BufferedImage bi=ImageIO.read (new File ("G:\\Java\\WhatDotColour\\Pacman.PNG"));
到
bi = ImageIO.read (new File ("G:\\Java\\WhatDotColour\\Pacman.PNG"));
并更改
g.drawImage (bi, 20, 140, this); //.drawImage(in, 0, 0, null);
到
if (bi!=null) g.drawImage (bi, 20, 140, this); //.drawImage(in, 0, 0, null);