ActionListener用于包含大量按钮的游戏

时间:2014-01-26 04:48:22

标签: java jbutton actionlistener

因此,我正在与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{

        }
    }

}

非常感谢任何帮助。 感谢。

1 个答案:

答案 0 :(得分:0)

我通过使用像这样的for循环解决了我的问题。

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