1

JPanel各オブジェクトを通過させてペイントさせようとしていますgraphicsが、java.lang.NullPointerExceptionエラーが発生します。

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main extends JPanel {

    private static final long serialVersionUID = 1L;
    Main panel;
    Player mainPlayer;

    public static void main(String[] args) {
        JFrame frame = new JFrame("Asteroids");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Main panel = new Main();
        frame.add(panel);
    frame.setBackground(Color.BLACK);
        frame.setSize(500, 400);
        frame.setVisible(true);
    }

    public void paintComponent(Graphics g) {
        mainPlayer.paintComponent(g);
    }
}

そして、このコードは別の.javaファイルにあります

import java.awt.Graphics;

public class Player {

    public Player() {

    }

    public void paintComponent(Graphics g) {

    }
}

このコードが機能しない理由を誰かが知っていますか?

それは私に与えています:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Main.paintComponent(Main.java:23)
4

2 に答える 2

4

mainPlayerをインスタンス化していない。インスタンス化されていないオブジェクト参照変数のデフォルト値はnullであるため、変数を逆参照しようとすると、23行目でNullPointerExceptionが発生します。

于 2012-08-15T03:00:30.737 に答える
2

mainPlayer変数は、問題の原因です。mainメソッドを追加する必要があります。panel.mainPlayer=newPlayer(); mainPlayerはデフォルトでnullであるため、それを使用してそのメソッドを呼び出すには、オブジェクトのインスタンスに設定する必要があります。

于 2012-08-15T03:21:48.090 に答える