当前位置: 首页 > 知识库问答 >
问题:

如何使用scalafx KeycodeCombination.Match函数?

慕朝明
2023-03-14

下面是我认为基于我看到的javafx示例可以工作的方法,但是在(ctla.match(ke))上出现了一个错误,指向“match”并说“Identifier expected但'match'found”。任何指向具有复杂键事件处理的scalafx示例的链接都将受到赞赏。

import scalafx.Includes._
import scalafx.application.JFXApp
import scalafx.application.JFXApp.PrimaryStage
import scalafx.scene.input.{KeyCode, KeyCombination, KeyCodeCombination, KeyEvent}
import scalafx.scene.Scene
import scalafx.stage.Stage

object Main extends JFXApp {
  val ctlA = new KeyCodeCombination(KeyCode.A, KeyCombination.ControlDown)
  stage = new PrimaryStage {
    scene = new Scene {
      onKeyPressed = { ke =>
        if (ctlA.match(ke))
          println("Matches ^A")
        else
          println("No match")
      }
    }
  }
}

共有1个答案

顾骏祥
2023-03-14

这是个奇怪的问题。ScalaFX显然只是JavaFX API的包装器,因此它尽可能忠实地遵循该API。在这种情况下,有一个小问题,因为match既是属于keycodeCombination的函数的名称,又是一个Scala关键字--这就是为什么当编译到达这一点时会失败的原因:Scala编译器认为这是match关键字,因此无法理解它。

幸运的是,有一个简单的解决方案:只需将match括在背勾内,这样您的代码就变成了:

import scalafx.Includes._
import scalafx.application.JFXApp
import scalafx.application.JFXApp.PrimaryStage
import scalafx.scene.input.{KeyCode, KeyCombination, KeyCodeCombination, KeyEvent}
import scalafx.scene.Scene
import scalafx.stage.Stage

object Main extends JFXApp {
  val ctlA = new KeyCodeCombination(KeyCode.A, KeyCombination.ControlDown)
  stage = new PrimaryStage {
    scene = new Scene {
      onKeyPressed = { ke =>
        if (ctlA.`match`(ke))
          println("Matches ^A")
        else
          println("No match")
      }
    }
  }
}

您的程序现在运行良好!

 类似资料:
  • 问题内容: 我正在尝试使用该功能。我已经将字符串类型time格式化为datetime 我定义了搜索开始时间和结束时间: 然后我打电话 这是我得到的错误: 请如何解决。谢谢 问题答案: 示例-我使用评论中的信息: 结果:

  • 我使用下面的逻辑来计算python列表中的平均时间增量。 以下是该函数的输入:- 然而,我得到了下面的错误。 在prepare_llog(llog_pd)288 289 result_df[‘输入率’]=\-- ##############################################################################################

  • 问题内容: 我有点着急,所以我只想问一个关于querydsl的快速问题。根据我的研究,查询dsl不支持存储过程,但可以支持数据库功能。我的问题是我们如何使用querydsl调用那些数据库函数? 问题答案: 您可以在查询中使用基于TemplateExpression的任意JPQL语法注入。 例如 如果您使用的是Hibernate 4.3或任何其他符合JPA 2.1的提供程序,则可以使用FUNCTIO

  • 我想知道是否有办法在python代码中使用c函数 例如,在做了我的研究之后,我确实使用. dll文件找到了这个解决方案。但它找不到功能我的代码: 享乐cpp: 使用cmd编译它: g有趣。cpp-o乐趣。动态链接库 使用Python调用函数,ctype: 但是我有这个错误: 回溯(最后一次调用):文件“c:\Users\User.vscode\extensions\ms python.python

  • 问题内容: 我非常想使用Map.computeIfAbsent,但是自从lambdas进入本科以来已经太久了。 几乎 直接来自文档:它给出了做事的旧方法的示例: 和新方法: 但是在他们的示例中,我认为我不太“了解”。我将如何转换代码以使用新的lambda表达方式? 问题答案: 假设您有以下代码: 然后,您将看到消息恰好一次,就像在第二次调用时已经存在该键的值一样。的在λ表达式仅仅是该地图将传递到您

  • 问题内容: 我有以下功能: 现在,我想使用一次执行此功能: 问题是,不能腌制lambda,因此失败了。解决此问题的最简洁的方法是什么? 问题答案: 使用功能对象: 运行您的: