2011-03-25 114 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

想出了一个解决方案,改变了鼠标监听到一个动作监听器解决了缺少的点击问题。使用点击按钮时发送的事件而不是检测按钮上的点击。谢谢您的帮助。