public class AnimationTest extends JFrame{



public AnimationTest(){

BufferedImage bim = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
try{
File file = new File("F:\\GamePic\\147-1.bmp");
bim = ImageIO.read(file);
}

catch(IOException e){
e.printStackTrace();
}

Graphics g = getGraphics();
g.drawImage(bim,0,0,null);

setSize(800, 600);
setVisible(true);


}

public static void main(String[] args){


AnimationTest a = new AnimationTest();
a.setDefaultCloseOperation(EXIT_ON_CLOSE);
}

解决方案 »

  1.   

    JAVA只支持三种图片格式GIF, PNG,JPG
    .bmp位图格式不是JAVA原生支持的图像格式。
    所以你得到NPE
    解决:
    1.应用第三方库来读BMP格式图像
    2.使用JAVA 2D支持的三种图像格式之一来加载!
      

  2.   


    谢谢您的解答,今早我看代码时灵感一现找到了答案。bmp图像是可以加载的,出错原因是因为我在构造函数中调用了方法drawImage(bim,0,0,null),drawImage最后一个参数指向绘制当前图像的对象,默认是用的this,而这个对象还在构造中,即没有创建好,因此引用它会引发空指针异常。我的解决方法是把绘图的这些代码移到paint()方法中解决,当时为了图省事就没用,想直接用构造函数解决说明偷懒是不可取的
      

  3.   


    谢谢您的解答,今早我看代码时灵感一现找到了答案。bmp图像是可以加载的,出错原因是因为我在构造函数中调用了方法drawImage(bim,0,0,null),drawImage最后一个参数指向绘制当前图像的对象,默认是用的this,而这个对象还在构造中,即没有创建好,因此引用它会引发空指针异常。我的解决方法是把绘图的这些代码移到paint()方法中解决,当时为了图省事就没用,想直接用构造函数解决说明偷懒是不可取的