鼠标事件在java中随机点击次数

时间:2011-03-25 19:06:20

标签: java swing event-handling

到目前为止,代码的目标是交易在玩家1和玩家2之间来回转换,并允许转向它的玩家将其中一个棋子变为不可见(将图标设置为空)。它现在可以正常工作,来回交换,点击时片段变得不可见,但有时它不是第一次点击。在更改为null之前,可能需要对正确的部分进行3或4次单击。这有什么原因会发生吗?

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 {
        }
    }
}

2 个答案:

答案 0 :(得分:2)

找出一个解决方案,将鼠标侦听器更改为动作侦听器可以解决丢失的点击问题。使用单击按钮时发送的事件,而不是检测按钮上的单击。谢谢你的帮助。

答案 1 :(得分:1)

当您在Java中双击(或三击或四击)某些内容时,您会得到以下信息:

  • 第一次点击:MouseEvent,clickCount = 1
  • 第二次点击:MouseEvent,clickCount = 2
  • 第三次点击:MouseEvent,clickCount = 3

所以想象一下你是双击player1的按钮。第一个事件会将玩家改为玩家2;第二个事件会将其改回播放器1!

要解决这种情况 - 请检查clickCount(me.getClickCount())并忽略该事件,如果它不是1.喜欢

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