【发布时间】:2013-06-12 00:02:24
【问题描述】:
我将以下 KeyListener 添加到我的按钮,并注意到如果我按住任何键,它就会开始连续触发,就好像我在快速按下和释放它一样。我从不释放密钥,但“a:已释放”消息仍在我的控制台中打印。为什么释放监听器被解雇,我怎样才能停止重复按键?只要我按住键,我只想要一个“a:按下”,然后当我释放键时,我想要一个“a:释放”。
button.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyChar() + ": pressed");
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println(e.getKeyChar() + ": released");
}
});
有没有办法让这些方法像synchronized 方法一样工作,即使(我假设)没有为重复事件创建新线程。
【问题讨论】:
-
这就是 KeyListener 在 Linux 上的工作方式(无法确认其他操作系统),您可以使用 tcb 的答案所建议的标志来解决它。
标签: java events awt keylistener