我最近写的程序有:
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中。
答案 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());
^^^^
同样对删除代码进行类似的更改。
密钥代码是您要比较的原始键盘代码,而不是分配给密钥的字符(并非所有密钥都分配了字符)。