加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

swing – 响应scala中的关键事件

发布时间:2020-12-16 18:52:17 所属栏目:安全 来源:网络整理
导读:我正在尝试一些 Scala gui编程(我在 Scala中的第一个项目,所以我认为我从简单的开始).但我似乎陷入了一些似乎应该相对微不足道的事情.我有一个扩展scala.swing.MainFrame的类,我想检测用户在该窗口具有焦点时按键的时间.有趣的是,我似乎无法找到任何方式让事
我正在尝试一些 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
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读