簡體   English   中英

帶有多個按鈕的游戲的ActionListener

[英]ActionListener for a game with lots of buttons

因此,我正在為一個類項目制作一個帶有GUIS的簡單回合制Stradegy游戲。 我對GUI和事件驅動的編程還很陌生,就像一個提示。

我目前遇到的主要問題是,我在15x15的網格布局中使用帶有225個TileButtons(擴展Jbutton的按鈕)的borderlayout,我需要將一個單元從一塊移到另一塊。 我不知道如何使用動作偵聽器來獲取多個按鈕,所以我當前正在做的是將(我認為是)tilebutton存儲在數組中,當按下兩個按鈕時它將移動這些按鈕。 但我不斷得到nullpointerexceptions。

這是我的動作偵聽器代碼:

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
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM