2013-04-14 57 views
0

這是我第一次使用GUI。我似乎不能用我的頭來操縱它。我覺得答案很簡單(我對此感到抱歉),但我不能把它放在我的頭上。 :/連接四個; 2D陣列混淆

我有一個2D JLabel陣列,每個設置爲默認主板ImageIcon。每列上方都有指定列號的按鈕。在actionPerformed方法,我有這樣的每個按鈕:

if(e.getSource()== (whatever column number button name)) 
{ 
} 

我不知道如何將令牌添加到指定的令牌最下面一行,我認爲我找到後的最低行設置的ImageIcon P0 ,我必須根據玩家的顏色將其設置爲pR或pB。但我不知道如何編寫一個循環,找到存儲p0的最低單元格,或者如何跟蹤播放器的顏色。

final ImageIcon p0 = new ImageIcon("Board.jpg");// default board box 
final ImageIcon pR = new ImageIcon("Red.jpg"); 
final ImageIcon pB = new ImageIcon("Black.jpg"); 

JLabel [][] connectFourBoardComp = new JLabel[6][7]; 
for(int row=0, count=6; row<1; row++) 
{ 
    for(int col=0; col<7; col++, count++) 
    { 
      connectFourBoardHumn[row][col].setIcon(p… 
      System.out.println(connectFourBoardHumn[… 
    } 
} 

任何幫助將不勝感激!謝謝! :)

回答

0

要跟蹤當前玩家的顏色,只是每用戶播放時切換顏色:

if (nextColor == pR) { 
    nextColor = pB; 
} 
else { 
    nextColor = pR; 
} 

要在第一行與P0圖標(假設最下面一行是在索引0 ),直到找到一個循環:

int firstEmptyRow = connectFourBoardComp.size(); // default case: the the row is full of tokens 
for (int i = 0; i < connectFourBoardComp; i++) { 
    if (connectFourBoardComp[i][column] == p0) { 
     firstEmptyRow = i; 
     break; // break out of the loop 
    } 
} 
+0

**非常感謝您的回覆!這是我會寫嗎?:if(e.getSource()== buttonCompCol0) { \t \t \t int firstEmptyRow = connectFourBoardComp.size(); //默認情況下:該行是填滿有令牌 \t \t \t對(INT I = 0; I Elva02

+0

號。如果你這樣做,你將計算第一個空行的任何操作,因爲你永遠不使用它。最後的指令應該是:if(firstEmptyRow = connectFourBoardComp.size(),則可能應該顯示錯誤消息。 –

+0

重複每列的代碼會出現什麼問題?如果我做了一個單獨的方法,這是我必須做的嗎?:在'actionPerformed'方法中,對於每個按鈕,我將'int column'設置爲相應的數字並調用方法。該方法檢查並分配'firstEmptyRow'並根據顏色放置令牌。我是否正確掌握了這一點?再次感謝你的幫助。 – Elva02