swing - 响应Scala中的关键事件

标签 swing scala keyevent

我正在尝试一些 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(_, Key.Space, _, _) =>
                    label.text = "Space is up"
            }
            focusable = true
            requestFocus
        }
    }
}      

关于swing - 响应Scala中的关键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3136457/

相关文章:

Java小程序在eclipse中工作,而不是在其他地方工作

Java Swing : Ctrl+F1 does not work globally, 但互为组合键

scala - 重试返回 Future 的函数

scala - 类型类和包对象的奇怪隐式解析行为

android.view.View$OnUnhandledKeyEventListener

c++ - 管理退出程序的转义键

java - 在netbeans中使主板随着框架收缩和扩展

java - BorderLayout 只显示一个对象

java - 在java中显示Gif动画

scala - 组合任意长度的多个列表