【发布时间】:2014-04-16 11:05:36
【问题描述】:
我想在 Scala 中检测键盘快捷键,例如 CTRL+S。如果只按下一个键很容易,但如果按下两个或多个键似乎很难。还有比以下更好的解决方案吗?
reactions += {
case c @ KeyReleased(_, Key.S, _, _) =>
if (c.peer.isControlDown())
// CTRL+S pressed
}
感觉在语义上有些不正确,因为它会检查释放 S 按钮后是否按下了 CTRL 按钮(我认为使用 KeyPressed 或 KeyTyped 并没有更好)。
这是SSCE:
import scala.swing._
import scala.swing.event._
object SSCCE extends SimpleSwingApplication {
def top = new MainFrame {
val textArea = new TextArea(3, 30)
contents = new FlowPanel {
contents += textArea
}
listenTo(textArea.keys)
reactions += {
case c @ KeyReleased(_, Key.S, _, _) =>
if (c.peer.isControlDown())
Dialog.showMessage(null, "Message", "CTRL+S pressed")
}
}
}
【问题讨论】:
标签: scala scala-swing