如何修改我的调度程序类以捕获多个按键? 现在我只想打印它们......
class MyDispatcher implements KeyEventDispatcher {
public boolean dispatchKeyEvent(KeyEvent e) {
if (e.getID() == KeyEvent.KEY_PRESSED) {
System.out.println(e.getKeyChar());
}
return false;
}
}
答案 0 :(得分:4)
我解决了我的问题:
class MyDispatcher implements KeyEventDispatcher {
ArrayList<String>typedKeys = new ArrayList<String>();
public boolean dispatchKeyEvent(KeyEvent e) {
if (e.getID() == KeyEvent.KEY_PRESSED)
typedKeys.add(""+e.getKeyChar());
if (e.getID() == KeyEvent.KEY_RELEASED) {
String str = typedKeys+"";
System.out.println(str.substring(1,str.length()-1).replaceAll(", ",""));
typedKeys.clear();
}
return false;
}
}
答案 1 :(得分:3)
如果用户输入
N+J
,我想打印NJ
。
尝试同时按N
和J
会导致一个KeyEvent
到达另一个enum Key
。一种方法是创建与此one类似的EnumSet
。使用Set current
创建KEY_PRESSED
。当current
个事件到达时,请更新KEY_RELEASED
以包含当前按下的键加上新的键;当current
个事件到达时,请更新current.equals()
以排除新的事件。方法EnumSet
将允许与游戏中使用的预定义关键状态进行比较。请注意,{{1}}实例是不可变的,但对于合理数量的键,效率很小。