KeyPressed()/ KeyReleased()按住键时反复触发[WINDOWS]

时间:2014-07-23 06:08:23

标签: java keylistener

在你将此标记为重复问题之前,我必须澄清;其他有这个问题的人有基于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);
}

应该说明每个tick,keysReleased ArrayList都清除了所有数据。

由于

0 个答案:

没有答案