[英]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.