Javafx 表复制/粘贴监听器

问题描述 投票:0回答:1

在 Javafx 表上监听复制/粘贴命令的正确方法是什么?

我不想只听 Ctrl+C 键,因为用户可能使用的是 Mac。

编辑:此外,Windows 11 现在同时使用 Ctrl+C 和 Ctrl+INSERT 进行复制。在不检查操作系统和为 Windows 11 创建额外的关键侦听器的情况下,我该如何处理这个问题?

java javafx
1个回答
1
投票

对于使用键盘进行复制/粘贴,JavaFX 支持语义“快捷方式”修饰符,相当于 Windows 和 Linux 上的“control”或 Mac 上的“Meta”(也称为“Command”)。这在 KeyCombination

 文档中进行了描述:

shortcut
修饰符用于表示主机平台键盘快捷键中常用的修饰键。例如,Windows 上为
control
,Mac 上为
meta
(命令键)。通过使用
shortcut
键修饰符,开发人员可以创建独立于平台的快捷方式。因此,“Shortcut+C”组合键在 Windows 上被内部处理为“Ctrl+C”,在 Mac 上被处理为“Meta+C”。

您可以在使用

KeyEvent.isShortcutDown()
处理按键事件时使用此功能,或者在加速器或助记符中使用,例如
new KeyCodeCombination(KeyCode.C, KeyCombination.SHORTCUT_DOWN)


编辑回应

编辑:此外,Windows 11 现在同时使用 Ctrl+C 和 Ctrl+INSERT 进行复制。在不检查操作系统和为 Windows 11 创建额外的关键侦听器的情况下,我该如何处理这个问题?

据我所知,JavaFX 中没有通用的“此操作是平台

COPY
操作吗”API。我没有 Windows 机器来测试(或者,实际上,带有“INSERT”键的 Mac 键盘),但我认为对于文本输入控件, Shortcut+INSERT 实现为“复制”,Shift+INSERT 实现为“粘贴”,在所有平台上。

您可以在此处了解文本输入控件如何实现键盘处理。本质上,为映射到每个处理程序的每个按键组合创建不同的输入映射,并且中央事件处理程序使用该映射来确定按键事件发生时的操作。 (因此 Ctrl+C 和 Ctrl+INSERT 有一个单独的输入映射,两者都映射到同一操作。)请注意,这些行为类不是公共 API 的一部分,这使得在 JavaFX 中修改行为变得非常困难。

© www.soinside.com 2019 - 2024. All rights reserved.