-1

コードを実行すると、次のエラーが発生します。

スレッド「メイン」での例外 java.lang.NullPointerException

at Main.drawBlock(Main.java:48)
at Main.<init>(Main.java:43)
at Main.main(Main.java:58)

これは私が描いたグラフィックのせいだと思いますが、それは今までになかった. 理由がわかりません。これが私のコードです:

Graphics2D g;
static JFrame jf = new JFrame();
Image Air;
Image Grass;
Image icon;

public Main() {
    icon = new ImageIcon(this.getClass().getResource("Icon.png")).getImage();
    Grass = new ImageIcon(this.getClass().getResource("Grass.png")).getImage();
    Air = new ImageIcon(this.getClass().getResource("Air.png")).getImage();

    jf.setIconImage(icon);
    drawBlock(Air,0,0);

}

private void drawBlock(Image img, int x, int y) {
    g.drawImage(img,x,y,null);
}

public static void main(String[] args) {
    jf.setSize(792,528);
    jf.setLocationRelativeTo(null);
    jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
    jf.setVisible(true);
    jf.setTitle("Minecraft 2D Adventure");

    new Main();


}}
4

3 に答える 3

2

初期化していないGraphics2D gので g はnull

の本当の理由はNPEGraphics2Dあり、AbstractClassインスタンス化することはできません。

Graphics2D以下のようにインスタンスのインスタンスを作成できます

GraphicsEnvironment env =
        GraphicsEnvironment.getLocalGraphicsEnvironment();
 env.createGraphics(BufferedImage);

createGraphics()または、 Fromを使用できますBufferedImage

public Graphics2D createGraphics()
于 2012-09-05T13:03:44.377 に答える
2

には何も割り当てないGraphics2D gため、NPE になります。

問題のより詳細な分析と解決方法については、AmitD の回答を参照してください。

于 2012-09-05T13:02:32.740 に答える
1

割り当てられたオブジェクトに値を割り当てない場合、デフォルト値はnullです。したがって、参照するときは何も参照していませんg

于 2012-09-05T13:06:23.780 に答える