(为清晰起见编辑)
我想检测用户何时按下并释放Java Swing中的键,忽略键盘自动重复功能.我还想在Linux,Mac OS和Windows上使用纯Java方法.
要求:
我在Java中面临的问题是,在Linux下,当用户持有一些密钥时,有许多keyPress和keyRelease事件被触发(因为键盘重复功能).
我尝试了一些没有成功的方法:
这是代码的基本(非工作)部分:
import java.awt.event.KeyListener;
public class Example implements KeyListener {
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
    System.out.println("KeyPressed: "+e.getKeyCode()+", ts="+e.getWhen());
}
public void keyReleased(KeyEvent e) {
    System.out.println("KeyReleased: "+e.getKeyCode()+", ts="+e.getWhen());
}
}
Run Code Online (Sandbox Code Playgroud)
当用户持有密钥(即"p")时,系统显示:
KeyPressed:  80, ts=1253637271673
KeyReleased: 80, ts=1253637271923
KeyPressed:  80, ts=1253637271923
KeyReleased: 80, ts=1253637271956
KeyPressed:  80, ts=1253637271956
KeyReleased: 80, ts=1253637271990
KeyPressed:  80, ts=1253637271990
KeyReleased: 80, ts=1253637272023
KeyPressed: …Run Code Online (Sandbox Code Playgroud)