Java 将paintComponent传递给另一个类时出错
我试图让每个对象通过传递Java 将paintComponent传递给另一个类时出错,java,swing,class,graphics,jpanel,Java,Swing,Class,Graphics,Jpanel,我试图让每个对象通过传递graphics将自己绘制到JPanel中,但是我得到了一个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 seria
graphics
将自己绘制到JPanel
中,但是我得到了一个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)
您没有实例化mainPlayer。由于未实例化的对象引用变量的默认值为null,因此当您尝试取消引用该变量时,第23行会出现NullPointerException。您没有实例化mainPlayer。由于未实例化对象引用变量的默认值为null,因此当您尝试取消引用该变量时,第23行会出现NullPointerException。导致您出现问题的是mainPlayer变量。您应该在主方法中添加panel.mainPlayer=newplayer();
由于mainPlayer默认为null,因此必须将其设置为对象的某个实例,才能使用它并调用其方法。mainPlayer变量是导致问题的原因。您应该在主方法中添加panel.mainPlayer=newplayer();
因为mainPlayer默认为null,所以您必须将其设置为对象的某个实例,以便使用它并调用其方法。让我们从以下事实开始:
mainPlayer
在您的代码示例中的任何地方都没有初始化。我现在感觉不太聪明……别担心,这发生在我们中最好的人身上。欢迎来到编程世界,在那里聪明的人会觉得自己很笨;)哈哈,我想我会喜欢这里的。让我们从以下事实开始:mainPlayer
在你的代码中没有任何地方被初始化。例如,我现在觉得自己不是很聪明……别担心,这发生在我们当中最好的人身上。欢迎来到编程世界,聪明的人会觉得自己很笨;)哈哈,我想我会喜欢这里的。谢谢,很抱歉完全忘记了。谢谢,很抱歉完全忘记了我添加了mainPlayer=newplayer()并将其设置为静态。我添加了mainPlayer=newplayer()并将其设置为静态。