2011-03-25 110 views
1

迄今爲止代碼的目標是交易在玩家1和玩家2之間來回切換,並允許轉動它的玩家將其中一個棋子變爲不可見(設置圖標爲空)。它現在正常工作,來回交易,點擊時不可見,但有時它不是第一次點擊。在更改爲空之前,它可能需要點擊3或4次點擊正確的作品。這有什麼原因會發生?在java中隨機點擊次數的鼠標事件

Robo2是第一名選手的圖標,robo1是第二名選手的圖標。這些作品被存儲在程序中的一系列JButton中,圖標設置爲播放器1或播放器2的圖像。

public void mouseClicked(MouseEvent me) { 
    JButton clicked = (JButton)me.getSource(); 

    if (player1) { 
     if (clicked.getIcon() == Robo2) { 
      clicked.setIcon(null); 
      player1 = false; 
      player2 = true; 
     } 
     else { 
     } 
    } 
    else if (player2) { 
     if (clicked.getIcon() == Robo1) { 
      clicked.setIcon(null); 
      player1 = true; 
      player2 = false; 
     } 
     else { 
     } 
    } 
} 
+0

它可能不是您的代碼的問題。我知道當我在Swing中創建圖形用戶界面時,它有時不會註冊點擊。 – DHall 2011-03-25 19:10:04

+0

找出解決方案,將鼠標偵聽器更改爲動作偵聽器可解決丟失的點擊問題。謝謝您的幫助。試圖找出如何標記爲答案,如果我看到了什麼,將會做。 – kyle 2011-03-25 21:09:08

回答

1

當您雙擊(或三擊,或四倍點擊)一些在Java中你會得到這樣的:

  • 第1點擊:的MouseEvent,的clickCount = 1
  • 第2點擊:的MouseEvent,的clickCount = 2
  • 第三點擊:的MouseEvent,的clickCount = 3

所以想象一下,您是由player1雙擊按鈕。第一個事件會將玩家改變爲玩家2;第二個事件會改變它回到player1!

爲了解決這個問題 - 檢查的clickCount(me.getClickCount()),並忽略該事件,如果不是1像

if (me.getClickCount() > 1) { 
    return; 
} 
// or else proceed as you do now 
+0

我試着添加這個,但它仍然表現得很奇怪。我不是雙擊任何東西,但我確實看到你來自哪裏。只需單擊一件件,有時需要多達4件間隔,隨着時間的推移,單擊一次。 – kyle 2011-03-25 20:09:59

2

想出了一個解決方案,改變了鼠標監聽到一個動作監聽器解決了缺少的點擊問題。使用點擊按鈕時發送的事件而不是檢測按鈕上的點擊。謝謝您的幫助。