执行上一个命令时阻止Java Keylistener

执行上一个命令时阻止Java Keylistener,java,keylistener,Java,Keylistener,我用Java实现了一个Keylistener,它基本上可以工作,但是如果我按住一个键,似乎所有的KeyEvents都是“堆叠”的,并且一个接一个地执行。一般来说,我想要这种行为,但由于在键事件上调用的方法需要一些计算时间,我想“阻止”Keylistener在已经执行从以前的KeyEvent调用的方法时接受事件。 我已经尝试在KeyListener中设置bool标志,但没有成功,因为似乎KeyListener方法是在前一个KeyEvent完全执行后调用的。 有什么办法可以做到这一点吗?谢谢 编辑:

我用Java实现了一个Keylistener,它基本上可以工作,但是如果我按住一个键,似乎所有的KeyEvents都是“堆叠”的,并且一个接一个地执行。一般来说,我想要这种行为,但由于在键事件上调用的方法需要一些计算时间,我想“阻止”Keylistener在已经执行从以前的KeyEvent调用的方法时接受事件。 我已经尝试在KeyListener中设置bool标志,但没有成功,因为似乎KeyListener方法是在前一个KeyEvent完全执行后调用的。 有什么办法可以做到这一点吗?谢谢

编辑:以下是我如何尝试但未成功的代码片段:

@Override
public void keyPressed(KeyEvent e) {
    frame.removeMouseListener(this);
    switch (e.getKeyCode())
    {
    case KeyEvent.VK_RIGHT:
    case KeyEvent.VK_DOWN:
    case KeyEvent.VK_PAGE_DOWN:  frame.myMethod(); break;

    case KeyEvent.VK_MINUS:
    case KeyEvent.VK_SUBTRACT: frame.myOtherMethod(); break;
    }
    frame.addMouseListener(this);
}
有什么办法可以做到这一点吗

在KeyListener中:

  • 从组件中删除KeyListener
  • 处理
  • 将KeyListener添加回组件

  • 您是否可以在密钥侦听器外部而不是内部设置一个标志?@user3581199,然后您错误地实现了建议,或者您的
    计算完成得比您想象的快,您不必担心这一点,或者您正在启动一个线程来进行计算,以便GUI可以自由地接受新事件。太多未知因素无法提供额外帮助。这篇文章演示了这个问题。我在第一篇文章中添加了一个代码片段。myMethod()和myOtherMethod()这两个方法都不使用线程。基本上,他们用Graphics2D进行图像处理。@user3581199,如果你试图抑制KeyEvents,为什么要删除鼠标侦听器?哦,这是因为复制和粘贴,在我的实际代码中,我确实删除/添加了KeyListener。
    哦,这是因为复制和粘贴,在我的实际代码中,
    ,张贴您的实际
    SSCCE
    。两天前有人问你要一个。