scala - KeyEvent 的问题

标签 scala listener scala-swing

我想知道为什么以下代码不起作用:

object Main extends SimpleSwingApplication {

  val dim = new Dimension(500, 110)

  def top = new MainFrame {
    contents = new FlowPanel{
      listenTo(keys, mouse.clicks)
      reactions += {
        case MouseClicked(_,_,_,_,_) => println("Mouse clicked")
        case KeyPressed(_, Key.C, _, _) => println("C pressed")
        case KeyTyped(_, Key.C, _, _) => println("C typed")
        case KeyReleased(_, Key.C, _, _) => println("C released")
      }
    }
    size = dim
  }

}

鼠标点击将被识别,但按键不会被识别。我还尝试了不同的键或修饰符,但似乎没有任何效果。我做错了什么?

(在不太可能的情况下,这可能与环境有关:我在 Windows 7 上使用 SBT 运行此代码)

最佳答案

this answer 开始工作,看来您需要包含该行

focusable = true

对于您的FlowPanel。然后它应该可以工作。

关于scala - KeyEvent 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13677001/

相关文章:

scala - 如何为 Scala 集合创建编码器(以实现自定义聚合器)?

java - 当我更改 JTable 列中的单元格时如何使用 setValueAt

java - Unit 的 Try 表达式不符合预期类型

scala - Scala Play 2.4 推荐的授权框架

scala - 在 docker compose 文件中将环境设置为列表

android - 如何在 Kotlin 中为变量设置监听器

java - TextField 中的 TextArea 中未显示字符串

swing - 有使用 'scala.swing'的好例子吗?

Scala Swing 组件对齐

scala - 关闭 Scala 秋千架