2014-02-12 46 views
1

我想做一個簡單的記憶遊戲。但我不知道如何設置actionPerformed當按下1個按鈕時,程序會等待再次點擊並檢查按鈕是否相同? 現在所有的代碼不會創建隨機點了,但[X](在其它方法設置),當按鈕被按下按鈕更改圖像校正圖像內存遊戲失敗

public void actionPerformed(ActionEvent a) { 

    for(int x = 0; x < 16; x++) { 
     if(a.getSource() == but[x]) { 
      but[x].setIcon(imageicon[x/2]); //Another method creates the imageicons 

     } 

     frame.repaint(); 
    } 

} 

回答

2
  1. 沒有必要如果你正在做的是更改JLabel或JButton的圖標,請致電repaint()
  2. 您將需要您的ActionListener包含一個變量,也許是一個Icon變量,它保存最後一個按鈕的Icon的值,我們稱之爲lastIcon。它最初將保持價值null
  3. 當第一個按鈕被按下時,它的圖標被顯示,它檢查lastIcon的值。如果它爲空,它知道這是第一個按鈕,並且lastIcon變量被分配了其圖標的值。
  4. 按下第二個按鈕時,它會顯示其圖標,並將其與最後一個相對照。如果相等,它將保持顯示兩個按鈕。如果不相等,它會啓動一個Swing Timer,將圖標重置爲默認值。無論哪種方式,它將lastIcon設置爲null。
  5. 請注意,你做不是想檢查一個按鈕==另一個按鈕。你想要比較他們的圖標,或者有一個獨立於視圖的獨立模型類,並檢查兩個按鈕在模型中是否相同。
+0

好,我會嘗試(: – ImGone98

+0

你將如何設置的按鈕,一個帶有但是[X],然後用一個,但[X + 1] – ImGone98

+0

@ ImGone98:請您的問題提供上下文。您的評論上面寫的就好像我理解你的整個程序一樣,事實是,我沒有,我只看到了一個小方法,所以我不能。 –