2017-03-16 127 views
2

我正在爲我的高中Java Java編程課上的戰列艦遊戲工作(迄今爲止失敗很糟糕)。到目前爲止,我擁有計算機和玩家的遊戲板,並且我已經爲計算機生成了這些船,並確保玩家可以沉沒它們。兩個板都有一個網格佈局,並且它們中的每一個都被分配給玩家和計算機的二維數組,並且是特定網格佈局的一部分(說實話,我並不真正瞭解很多代碼,因爲它是由我們的老師提供的,所以我不能確定哪些部分是相關的,哪些不是 - 這也是爲什麼我沒有發佈我的任何代碼)。在Java中點擊了哪個按鈕?

我現在要做的就是讓玩家放置他們的船隻,讓他們通過點擊棋盤選擇一個起始位置。

inside of a for loop 
      1: a button in buttonsPlayer is clicked 
      2: when a button is clicked, the two coordinates are calculated and stored as x, y coordinates 
      3: a ship is generated with the starting coordinates of x, y 

我知道如何生成一個隨機的x和y起始座標的船,就像我之前做過的那樣。點擊按鈕後,有沒有辦法在數組中獲取按鈕的編號?

(我不喜歡就在這裏5個其他線程,似乎問同樣的問題看一遍,但我真的不得到任何答案)

回答

0

你可以創建一個類,extends JButton並增添了更多的功能到JButton像這樣:

public class BoardPiece extends JButton{ 
    private int x,y; 
    //rest of class including getters and setters 
} 

這會隨之帶來的JButton所有功能,您可以添加基本上元數據約每平方米。

然後在你的事件監聽器,你將能夠只是調用.getX().getY()像這樣:

boardPiece.addActionListener((e)->{ 
    BoardPiece clicked = (BoardPiece)e.getSource(); 
    int x = clicked.getX(); 
    // and so on 

}); 
0

一個JButton有一個「動作指令」,它允許你把信息在它從其他distinquish它鈕釦。

使用

JButton.setActionCommand 
JButton.getActionCommand 

所以,如果你編碼按鈕的座標,在該字符串,在你的ActionListener可以

JButton b = (JButton) eventListener.getSource(); 

String cmd = b.getActionCommand(); 

,然後的過程,在cmd字符串來找出你在棋盤上的位置。

0

你可以給JButton一個ActionCommand,

JButton button1 = new JButton("Button 1"); 
    button1.setActionCommand("Button1id");` 

那麼如果要實現ActionListener來監聽buttonpress,您可以編寫

@Override 
    public void actionPerformed(ActionEvent ae) { 
     String buttonid = ae.getActionCommand(); 
    } 

代碼通過檢查buttonid的價值,你就會知道哪個按鈕被按下。

+0

setActionCommand中的「Button1id」是什麼意思?它只是一個確定行動的名稱,還是需要具體的東西? –

+0

這只是一些東西來識別它。它可以是任何字符串。你可以把一些數據放在那裏,就像你可以解析的數字一樣。 –