当我运行我的代码时,我收到此错误:
线程“main”中的异常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();
}}
答案 0 :(得分:2)
您不会向Graphics2D g
分配任何内容,因此也不会分配给NPE。
请参阅AmitD的答案,对问题进行更详细的分析,并指出如何解决问题。
答案 1 :(得分:2)
因为您尚未初始化Graphics2D g
所以g是null
NPE
Graphics2D
的真正原因是AbstractClass
,您无法对其进行实例化。
您可以创建Graphics2D
实例的实例,如下所示
GraphicsEnvironment env =
GraphicsEnvironment.getLocalGraphicsEnvironment();
env.createGraphics(BufferedImage);
或者您可以使用createGraphics()
来自BufferedImage
public Graphics2D createGraphics()
答案 2 :(得分:1)
如果没有为分配的对象赋值,则默认值为null
。因此,当您引用g
时,您将不再提及任何内容。