线程“main”中的异常java.lang.NullPointerException - Java错误

时间:2012-09-05 13:00:48

标签: java exception user-interface main graphics2d

当我运行我的代码时,我收到此错误:

  

线程“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();


}}

3 个答案:

答案 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时,您将不再提及任何内容。