使用HashSet检查是否按下了某个键

时间:2016-06-19 02:20:40

标签: java keyboard keypress hashset

我最近写的程序有:

public static Set<Character> pressed = new HashSet<Character>();

现在Set&#34;按下&#34;添加如下:

public void keyPressed(KeyEvent e) {
    pressed.add(e.getKeyChar());
}
public void keyReleased(KeyEvent e) {
            pressed.remove(e.getKeyChar());
}
public void keyTyped(KeyEvent e) {
    //System.out.println("keyTyped");
}

现在,如果我想做一些像

这样的事情
pressed.contains(x);

x是键盘上的键,我该怎么做呢。我试过了

 pressed.contains(KeyEvent.VK_UP);

然而,即使我按下向上箭头键,Set&#34; press&#34;不包含事件VK_UP。我需要知道的是如何找出输入.contains参数的内容,以检查它是否在Set press中。

1 个答案:

答案 0 :(得分:0)

你在哪里

public static Set<Character> pressed = new HashSet<Character>();
---
pressed.add(e.getKeyChar());

你应该做的

public static Set<Integer> pressed = new HashSet<>();
...
pressed.add(e.getKeyCode());
                    ^^^^

同样对删除代码进行类似的更改。

密钥代码是您要比较的原始键盘代码,而不是分配给密钥的字符(并非所有密钥都分配了字符)。