Java Scala/Swing—响应同时发生的多个关键事件
我试图弄清楚如何让Scala Swing对同时发生的多个关键事件做出反应。我知道Swing如何检测按下的一个键,但例如,它如何检测两个键是否同时按下?注意:没有Java经验 我知道第一个事件不起作用,但我试着用它来表达我正在努力实现的目标:Java Scala/Swing—响应同时发生的多个关键事件,java,swing,scala,keyevent,Java,Swing,Scala,Keyevent,我试图弄清楚如何让Scala Swing对同时发生的多个关键事件做出反应。我知道Swing如何检测按下的一个键,但例如,它如何检测两个键是否同时按下?注意:没有Java经验 我知道第一个事件不起作用,但我试着用它来表达我正在努力实现的目标: reactions += { //case KeyPressed(_, Key.Space && Key.Up, _, _) //label.text = "Space and Up are d
reactions += {
//case KeyPressed(_, Key.Space && Key.Up, _, _)
//label.text = "Space and Up are down"
case KeyPressed(_, Key.Space, _, _) =>
label.text = "Space is down"
case KeyPressed(_, Key.Up, _, _) =>
label.text = "Up is down"
}
有什么可能有用的想法吗?或者直接回答怎么做?制作一个缓冲区,保存所有按下的键
var pressedKeys = Buffer[Key.Value]()
按下键后,将该键添加到缓冲区,并检查缓冲区是否包含一些需要的键值
reactions += {
case KeyPressed(_, key, _, _) =>
pressedKeys += key
if(pressedKeys contains Key.Space){ //Do if Space
label.text = "Space is down"
if(pressedKeys contains Key.Up) //Do if Space and Up
label.text = "Space and Up are down"
}else if(pressedKeys contains Key.Up)//Do if Up
label.text = "Up is down"
释放按钮时清除缓冲区
case KeyReleased(_, key, _, _) =>
pressedKeys = Buffer[Key.Value]()
/* I tried only to remove the last key with
* pressedKeys -= key, but ended up working
*badly, because in many occasions the program
*did not remove the key*/
制作一个缓冲区,保存所有按下的键
var pressedKeys = Buffer[Key.Value]()
按下键后,将该键添加到缓冲区,并检查缓冲区是否包含一些需要的键值
reactions += {
case KeyPressed(_, key, _, _) =>
pressedKeys += key
if(pressedKeys contains Key.Space){ //Do if Space
label.text = "Space is down"
if(pressedKeys contains Key.Up) //Do if Space and Up
label.text = "Space and Up are down"
}else if(pressedKeys contains Key.Up)//Do if Up
label.text = "Up is down"
释放按钮时清除缓冲区
case KeyReleased(_, key, _, _) =>
pressedKeys = Buffer[Key.Value]()
/* I tried only to remove the last key with
* pressedKeys -= key, but ended up working
*badly, because in many occasions the program
*did not remove the key*/
可能的重复可能的重复