我试图通过传递JPanel
来让每个对象将自己绘制到{{1}}中,但我收到graphics
错误。
java.lang.NullPointerException
然后此代码位于不同的.java文件中
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);
}
}
有谁知道为什么这段代码不起作用?
它给了我:
import java.awt.Graphics;
public class Player {
public Player() {
}
public void paintComponent(Graphics g) {
}
}
答案 0 :(得分:4)
您没有实例化mainPlayer。由于未实例化的对象引用变量的默认值为null,因此当您尝试取消引用变量时,第23行会出现NullPointerException。
答案 1 :(得分:2)
mainPlayer变量是导致问题的原因。您应该添加main方法,panel.mainPlayer = new Player(); 因为mainPlayer默认为null,所以你必须将它设置为某个对象的实例才能使用它并调用它的方法。