因此,我正在与GUIS一起为一个班级项目制作一个简单的回合制Stradegy游戏。我是GUI和事件驱动编程的新手,就像一个抬头。
我目前的主要问题是我在15x15网格布局中使用带有225 TileButtons(按钮扩展Jbutton)的borderlayout,我需要将一个单元从一个单元移动到另一个单元。我不知道如何使用动作监听器来获取多个按钮,所以我现在正在做的是将数据按钮存储在数组nd中,当按下两个按钮时它将移动按钮。但我一直在做无效的观察。
这是我的动作监听器的代码:
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{
}
}
}
非常感谢任何帮助。 感谢。
答案 0 :(得分:0)
我通过使用像这样的for循环解决了我的问题。
for(TileButtons button: tilebuttons){ //an array holding all of the 225 tiles
if(event.getSource()==button){
//stuff
}
}