绘制方法的问题

时间:2012-08-11 22:23:50

标签: java nullpointerexception draw

所以我正在制作一个目前制作的塔防游戏的问题。我已经发布了以下部分代码,我发现了错误。

它的概念是我用mainMenu开始游戏,主菜单有一个按钮进入charMenu或退出游戏。这个屏幕加载非常好。

现在,当我点击进入charMenu时,我在“charMenu.draw(g)”行上找到了NullPointerException。如果我只创建一个菜单并删除另一个菜单的代码,它对两者都可以正常工作,但是如果我尝试为它们两者启用代码,我会得到错误并且没有调整它的线索它能做什么是

public class Screen extends JPanel implements Runnable {

public static boolean isMainMenu = true;
public static boolean isCharacterMenu = false;
public static MainMenu mainMenu;
public static CharMenu charMenu;

public void paintComponent(Graphics g) {

if(isMainMenu && !isCharacterMenu){ // Draws the Main Menu
        mainMenu.draw(g);
    }
    if(isCharacterMenu && !isMainMenu){
        charMenu.draw(g);
    }
    if(!isMainMenu && !isCharacterMenu){
        //draws the actual game board.
    }
}

public void run() {
    while(true) {
        if(isMainMenu && !isCharacterMenu){//The Main Menu
            mainMenu = new MainMenu();
        }
        if(isCharacterMenu && !isMainMenu)
            charMenu = new CharMenu();
        if(!isMainMenu && !isCharacterMenu) {
             //runs the game board
}

1 个答案:

答案 0 :(得分:0)

你正在一个空引用(charMenu)上调用一个方法(draw()),这就是触发NPE的原因。

在开始时声明它们应该这样做。

public static MainMenu mainMenu =  new MainMenu();
public static CharMenu charMenu = new CharMenu();

<强>更新

您还应该使用run函数更新变量isCharactereMenuisMainMenu - 例如在声明charMenu后 - 将isCharactereMenu设置为true