Java ActionListener,用于具有许多按钮的游戏

Java ActionListener,用于具有许多按钮的游戏,java,jbutton,actionlistener,Java,Jbutton,Actionlistener,因此,我正在为一个类项目制作一个简单的基于回合的带有GUI的Stradegy游戏。我对GUI和事件驱动编程是相当陌生的,就像一个新手一样 我目前面临的主要问题是,我在15x15网格布局中使用了带有225个TileButton(扩展Jbutton的按钮)的borderlayout,我需要将一个单元从一块移动到另一块。我不知道如何使用action listener获取多个按钮,所以我目前正在做的是将(我认为是)tilebutton存储在一个数组中,当按下两个按钮时,它将移动按钮。但我总是收到Null

因此,我正在为一个类项目制作一个简单的基于回合的带有GUI的Stradegy游戏。我对GUI和事件驱动编程是相当陌生的,就像一个新手一样

我目前面临的主要问题是,我在15x15网格布局中使用了带有225个TileButton(扩展Jbutton的按钮)的borderlayout,我需要将一个单元从一块移动到另一块。我不知道如何使用action listener获取多个按钮,所以我目前正在做的是将(我认为是)tilebutton存储在一个数组中,当按下两个按钮时,它将移动按钮。但我总是收到NullPointerException

这是我的操作侦听器代码:

public class TileHandler implements ActionListener{
    public TileHandler(){

    }
    public void actionPerformed(ActionEvent event){
        if(moveMode){

            if(((TileButton)event.getSource()).getOccupied()){
                if(buttonPresses.isEmpty()){
                    buttonPresses.add((TileButton) event.getSource());
                    unitStats.setText("Unit Stats\n"+((TileButton) event.getSource()).getUnit().getStats());
                }else{
                    buttonPresses.add((TileButton)event.getSource());
                    buttonPresses.get(0).getUnit().move(buttonPresses.get(0),
                            buttonPresses.get(1),
                            buttonPresses.get(1).getTileLocation());
                    unitStats.setText("UNIT STATS");
                    buttonPresses.clear();
                    moveMode=false;
                    buttonActive=false;
                    defend.setEnabled(true);
                    attack.setEnabled(true);

                }
            }
        }
        if(attackMode){

        }
        if(defendMode){

        }else{

        }
    }

}
任何帮助都将不胜感激。
谢谢。

我用这样的for循环解决了我的问题

for(TileButtons button: tilebuttons){ //an array holding all of the 225 tiles
    if(event.getSource()==button){
        //stuff
    }
}

你能告诉我们你在哪一行得到空指针异常吗?在这一行放一个断点:
buttonPresses.get(0).getUnit()…
,在调试模式下运行,看看buttonPresses包含什么。@WorldBright我在
unitStats.setText(“Unit Stats\n”+((TileButton)event.getSource()).getUnit().getStats()得到空指针@patterned我不熟悉调试或断点。。。