javafx - 将虚拟键盘更改为 AZERTY

标签 javafx javafx-8 keyboard-layout azerty-keyboard

我有一个 javafx 应用程序,它应该在 Windows 平板电脑上以全屏模式运行。

我的问题是,当键盘出现时,它是 QWERTY,而我的平板电脑是 AZERTY。

所以问题是:有没有办法使用系统虚拟键盘或将 javafx 虚拟键盘切换到 AZERTY?

最佳答案

我发现你在尝试完成同样的事情时有疑问。 我花了一天时间尝试让 javafx 显示 AZERTY 键盘,我找到了解决方案!

好吧,让我说清楚:javafx 根本没有办法拥有 azerty 键盘,因此您必须稍微修改一下。

下面的解决方案并不完美,您每次更新 javafx 时都必须重复它,但它可以让您对键盘进行极端自定义,远远超出 querty 和 azerty。

解决方案 1(脏但有效)

您需要在 JDK 附带的 javafx 文件中编辑一个文件

步骤:

  1. 转到 JDK(在 Mac 中:/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home)

  2. 进入 jre/lib/ext 并将名为 jfxrt.jar 的 javafx jar 复制到桌面上的文件夹中。

  3. 如果没有EMACS,安装EMACS,然后用这个软件打开复制的jar文件

  4. 浏览文件列表搜索 com/sun/javafx/scene/control/skin/TextBoard.txt 该列表是从 A-Z 排序的,所以请使用它(有超过 6000 个文件)。

  5. 打开它,您就在这里。将角色更改为让您开心的任何顺序。我加入了 azerty 命令。

  6. 保存 jfxrt.jar 并将其复制回原来的位置。完成。

注意:不要尝试提取 jar 并重新压缩它,因为 jdk 保留文件索引列表,它不会工作。

结果:azerty javafx virtual keyboard in action

解决方案 2(干净但我没有完成)

当我深入研究 javafx 类时,我发现负责加载布局键盘的 TextBoard.txt 文件的类是 FXKVSkin 此类旨在接收其他类型的键盘,而不是唯一的 qwerty 默认键盘。 您所要做的就是将此添加到您的代码中:

textFieldThatYouUse.getProperties().put(FXVK.VK_TYPE_PROP_KEY, "mykeyboard");

mykeyboard 是您创建的名为 MykeyboardBoard.txt 的文件,如 TextBoard.txt(大写字母很重要)。

FXKVSkin 现在将查找名为 MykeyboardBoard.txt 的文件,我的冒险就此结束。 您需要让 FXKVSkin 找到您的文件,我尝试在运行时将文件添加到类路径解决方案 Here但它没有用。

如果有人能解决这个问题,请将其添加为答案,这将是一个不那么肮脏的解决方案。

希望这些解决方案对一些非英语人士有所帮助! :p

关于javafx - 将虚拟键盘更改为 AZERTY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31335981/

相关文章:

java - 如何从 FXML 文档加载特定容器?

java - 向所有按钮添加相同的操作,但操作未应用于 Javafx 中的最后一个按钮

android - 单击按钮后更改键盘布局

C# - 获取用户键盘类型 (QWERTY/AZERTY)

java - ListView JavaFX中交替行左侧和右侧的图像和文本

exception - JavaFX 和外部 JAR

JavaFX 获取单个调整大小事件

delphi - 如何模拟 Alt+Shift 来更改 Windows 中的语言?

java - 从文本文件读取的音乐播放器会同时播放所有片段 Javafx

Java: setCellValuefactory; Lambda 与 PropertyValueFactory;优点缺点