微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swing – 响应scala中的关键事件

我正在尝试一些 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
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐