Java 如何在小程序上绘制图像

Java 如何在小程序上绘制图像,java,awt,paint,bufferedimage,Java,Awt,Paint,Bufferedimage,每次我尝试运行它时,它都会给我一个空指针异常。如何修复它?更改: public class ImageExample2 extends Applet { BufferedImage bi; public void init () { resize (500, 500); try { BufferedImage bi = ImageIO.read (new File ("G:\\Java\\

每次我尝试运行它时,它都会给我一个空指针异常。如何修复它?

更改:

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);

    }
}

改变

bi = ImageIO.read (new File ("G:\\Java\\WhatDotColour\\Pacman.PNG"));


不要将
Applet
文件混用。它们就像油和水一样。小程序在浏览器中运行。始终使用相对路径

用于获取基本URL。这是包含此小程序的目录的URL

示例代码:(查看getCodeBase()方法的输出并修改图像路径)

如果您使用的是Windows&EclipseIDE,请查看下面显示的屏幕截图,以获取上述示例代码图像路径


使bi成为一个类变量(即全局变量)我是Java新手,所以我不确定如何实现这一点。实际上,已经做到了,请看我的答案……实例变量根本没有初始化。
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);
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);

    }
}