我正在尝试一些
Scala gui编程(我在
Scala中的第一个项目,所以我认为我从简单的开始).但我似乎陷入了一些似乎应该相对微不足道的事情.我有一个扩展scala.swing.MainFrame的类,我想检测用户在该窗口具有焦点时按键的时间.有趣的是,我似乎无法找到任何方式让事件发生.
我找到了一个关于其他人如何解决这个问题的例子:http://houseofmirrors.googlecode.com/svn/trunk/src/src/main/scala/HouseGui.scala但他们似乎已经恢复使用Java Swing API,这有点令人失望.有谁知道是否有更惯用的截取事件的方式?
解决方法
这似乎适用于Scala 2.9
package fi.harjum.swing import scala.swing._ import scala.swing.event._ import java.awt.event._ object KeyEventTest extends SimpleSwingApplication { def top = new MainFrame { val label = new Label { text = "No click yet" } contents = new BoxPanel(Orientation.Vertical) { contents += label border = Swing.EmptyBorder(30,30,10,10) listenTo(keys) reactions += { case Keypressed(_,Key.Space,_,_) => label.text = "Space is down" case keyreleased(_,_) => label.text = "Space is up" } focusable = true requestFocus } } }