JavaFX InputMap/ActionMap 等价物?

迈克啮齿动物

我终于完全切换到 JavaFX。

我非常热衷于按键功能。

是否有与您在 Swing 中找到的(非常好的)等效的热键架构?对于JavaFX文本控件对象,它如何工作?我想如果我看一看,一切都会变得清楚javafx.scene.control.TextInputControl当然也试过谷歌搜索。

但我不是更聪明。据推测,编辑文本时必须有您需要的最小按键绑定的来源?是否类似地分层?

对于 Swing,每个人都JComponent可以使用 1ActionMap和 3 InputMaps(并且所有这些都可以有“祖先”映射)。3 InputMap“类型”被确定JComponent的常数WHEN_FOCUSEDWHEN_IN_FOCUSED_WINDOW并且WHEN_ANCESTOR_OF_FOCUSED_COMPONENT其是不言自明的名字。我很想知道有多少 Swing 用户熟悉所有这些东西,但就我个人而言,作为一个键盘狂热者,我广泛地使用了这个功能。

能够将键绑定附加到给定的javafx.scene.NodeusingsetOnKeyPressed大概等同于使用WHEN_FOCUSEDSwing 功能……但是我想知道其他两个类别呢?它们是否在 JavaFX 的当前实现中根本不存在?

最终,对于 Swing,在幕后显然有一个非常复杂的机制,涉及击键被“传递”到JComponent对象的层次结构,直到它们被InputMap(或不被)“捕获” ......大概必须有点像这在 JavaFX 中。最好有章节和经文...

埃德

在 JavaFX 中,您可以为KeyPressed事件注册回调

例如:

myTextField.setOnKeyPressed(event->{
    if (event.getCode() == KeyCode.ENTER){
        //do something here
    }
}

如果您想注册一个全局键组合(例如,用于保存的典型 Ctrl-S),您可以改为使用:

myScene.getAccellerators().put(
    new KeyCodeCombination(KeyCode.S, KeyCombination.CONTROL_DOWN),
            () -> { /** save my work **/ }
    )

可用 KeyCodeCombinations 列表:https ://docs.oracle.com/javafx/2/api/javafx/scene/input/KeyCodeCombination.html

编辑(1):事件传播的工作原理

来自http://docs.oracle.com/javafx/2/events/processing.htm

事件传递过程包含以下步骤:

  • 目标选择
  • 路线建设
  • 事件捕捉
  • 事件冒泡

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript 的 NSTimer 等价物

来自分类Dev

Sequelize Scope 等价物

来自分类Dev

什么是PHP $ _ENV的Ruby等价物?

来自分类Dev

Swift中的Python“或”等价物?

来自分类Dev

什么是Java的“延迟”等价物

来自分类Dev

什么是MySQL的smallint的Java等价物

来自分类Dev

反应$$(window).scrollTop()的等价物

来自分类Dev

python在clojure中累积等价物

来自分类Dev

共享库的“哪个”等价物

来自分类Dev

Windows 的 GNU Screen 等价物?

来自分类Dev

内嵌图像的背景位置等价物

来自分类Dev

Git 的壁球合并的 Mercurial 等价物

来自分类Dev

SAS 未排序的等价物

来自分类Dev

Linux 的 Paint.NET 等价物?

来自分类Dev

什么是 $.ajaxPreFilter() 的 Angular JS 等价物

来自分类Dev

Python 中的 Lua 表等价物

来自分类Dev

Java 中的 OrderByDecending(LINQ) 等价物

来自分类Dev

Guice 中的 ExceptionHandler 等价物

来自分类Dev

QML : QPainterPath 的等价物是什么?

来自分类Dev

uksort 在 python 中的等价物

来自分类Dev

JSDoc 的 WebStorm 中的 PHPDoc 等价物?

来自分类Dev

什么是 Mathematica 地图的 MATLAB 等价物?

来自分类Dev

这个函数的 PHP 等价物

来自分类Dev

Ruby 数组函数的 Numpy 等价物

来自分类Dev

什么是 Java 的 ByteArrayOutputStream 的 JavaScript 等价物?

来自分类Dev

Scala classOf[] 的 java 等价物

来自分类Dev

显示表格 - vanilla JS 等价物

来自分类Dev

如何使用 join 获得等价物

来自分类Dev

此Scala代码的Java等价物是什么?