你如何正确地跨类使用变量和方法

时间:2016-11-20 19:23:22

标签: java

我正在试图找出我收到此错误的原因,但到目前为止还没有结果。

Exception in thread "Thread-2" java.lang.NullPointerException
    at Help.render(Help.java:22)
    at Game.render(Game.java:246)
    at Game.run(Game.java:123)
    at java.lang.Thread.run(Unknown Source)

我正在尝试从另一个类运行一个方法,这个方法总会导致这种错误。

public void centerText ( String m , Graphics g,  int y){

        FontMetrics fm = g.getFontMetrics ( g.getFont() );
        int sw = fm.stringWidth ( m );
        g.drawString ( m , ( Game.WIDTH * Game.SCALE + sw ) / 2 - sw , y + sw /2);
    }

这是Menu类中的一种方法,它是一种游戏状态。

现在,我尝试从另一个名为Help的类中执行此方法,这是另一个游戏状态。

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;

public class Help {

    Menu menu;

    public void render(Graphics g) {

        Graphics2D g2d = (Graphics2D) g;

        g.setColor(Color.white);
        Rectangle test = new Rectangle(Game.WIDTH * Game.SCALE / 2 - 50, 350, 100, 50);
        g2d.draw(test);

        menu.centerText("Hello WOrld", g, 100);

    }

    public void tick() {

    }
}

我错过了什么,如果是的话,什么?感谢。

1 个答案:

答案 0 :(得分:0)

您还没有创建menu的实例。目前它是null。你不能在null上调用任何东西。

Menu java的内置类吗?创建它的实例。

Menu menu = new Menu();

What is a NullPointerException and how do I fix it?