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