Java 按住键[WINDOWS]时,KeyPressed()/KeyReleased()会重复激发

Java 按住键[WINDOWS]时,KeyPressed()/KeyReleased()会重复激发,java,keylistener,Java,Keylistener,在你把这个问题标记为重复问题之前,我必须澄清;其他有这个问题的人有基于Linux的系统;我正在使用Windows 在我的输入法中有这样的代码,用于从用户处获取输入,并将关键代码添加到数组列表中。问题是,当我按住键时,keyPressed()和keyReleased()只是重复触发,而不是keyPressed()触发一次,keyReleased()在键实际释放后触发。有什么办法可以实现这一点,或者有什么办法可以解决 我使用的是: public void keyPressed(KeyEvent e)

在你把这个问题标记为重复问题之前,我必须澄清;其他有这个问题的人有基于Linux的系统;我正在使用Windows

在我的输入法中有这样的代码,用于从用户处获取输入,并将关键代码添加到数组列表中。问题是,当我按住键时,keyPressed()和keyReleased()只是重复触发,而不是keyPressed()触发一次,keyReleased()在键实际释放后触发。有什么办法可以实现这一点,或者有什么办法可以解决

我使用的是:

public void keyPressed(KeyEvent e) {
    System.out.println("Fired Press");
    if (!keysPressed.contains(e.getKeyCode()))
        keysPressed.add(e.getKeyCode());
}

public void keyReleased(KeyEvent e) {
    System.out.println("Fired Release");
    keysReleased.add(e.getKeyCode());
    for (int i = 0; i < keysPressed.size(); i++)
        if (keysReleased.contains(keysPressed.get(i)))
            keysPressed.remove(i);
}
按下公共无效键(按键事件e){ System.out.println(“点火印刷机”); 如果(!keysPressed.contains(例如getKeyCode())) 添加(例如getKeyCode()); } 公共无效密钥已释放(密钥事件e){ System.out.println(“点火释放”); 添加(例如getKeyCode()); 对于(int i=0;i 应该说明的是,每次勾选,keysReleased ArrayList都会清除所有数据


谢谢

请考虑提供一个演示您的问题的示例,这将减少猜测工作并生成更好的响应。请参阅我的代码。只需将它添加到KeyListener(以及ArrayList),它就可以正常工作。