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

java中随机点击次数的鼠标事件,java,swing,event-handling,Java,Swing,Event Handling,到目前为止,代码的目标是在玩家1和玩家2之间来回交易,并允许进行交易的玩家将其中一个棋子变为不可见(将图标设置为null)。它现在就起作用了,在点击时来回转换交易,而零件则不可见,但有时这不是第一次点击。可能需要在正确的工件上单击3或4下才能更改为null。这有什么原因吗 Robo2是第一个玩家的图标,robo1是第二个玩家的图标。这些棋子存储在程序中的JButton数组中,图标设置为player 1或player 2棋子的图像 public void mouseClicked(MouseEve

到目前为止,代码的目标是在玩家1和玩家2之间来回交易,并允许进行交易的玩家将其中一个棋子变为不可见(将图标设置为null)。它现在就起作用了,在点击时来回转换交易,而零件则不可见,但有时这不是第一次点击。可能需要在正确的工件上单击3或4下才能更改为null。这有什么原因吗

Robo2是第一个玩家的图标,robo1是第二个玩家的图标。这些棋子存储在程序中的JButton数组中,图标设置为player 1或player 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 {
        }
    }
}
在Java中双击(或三次单击,或四次单击)某些内容时,您会看到:

  • 第一次单击:MouseEvent,clickCount=1
  • 第二次单击:鼠标事件,单击计数=2
  • 第三次单击:鼠标事件,单击计数=3
等等

想象一下你正在双击player1的按钮。第一个事件将玩家更改为玩家2;第二个事件将改变它的权利回到player1

要纠正这种情况,请选中clickCount(me.getClickCount()),如果不是1,则忽略该事件。像

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

找到了一个解决方案,将鼠标侦听器更改为动作侦听器解决了缺少单击的问题。使用按钮被点击时发送的事件,而不是检测按钮上的点击。谢谢您的帮助。

您的代码可能没有问题。我知道当我在Swing中创建GUI时,有时它不会注册单击。找到了一个解决方案,将鼠标侦听器更改为动作侦听器解决了缺少单击的问题。谢谢你的帮助。试图找出如何标记为已回答,如果我看到某个内容就可以了。我尝试添加此内容,但它的行为仍然很奇怪。我没有双击任何东西,但我确实看到了你来自哪里。只需单击一次,有时需要4次间隔,间隔时间为一次单击。