我有一个javafx应用程序,应该在Windows平板电脑上以全屏模式运行。将虚拟键盘更改为AZERTY
我的问题是,当键盘出现时,它是在QWERTY,而我的平板电脑在AZERTY。
所以问题是:有没有办法使用系统虚拟键盘或将javafx虚拟键盘切换到AZERTY?
我有一个javafx应用程序,应该在Windows平板电脑上以全屏模式运行。将虚拟键盘更改为AZERTY
我的问题是,当键盘出现时,它是在QWERTY,而我的平板电脑在AZERTY。
所以问题是:有没有办法使用系统虚拟键盘或将javafx虚拟键盘切换到AZERTY?
布局的定义包含在jfxrt.jar(Java安装的一部分)中。它由TextBoard.txt
描述。可以使用7zip或类似程序浏览jfxrt.jar。 TextBoard.txt
is in com/sun/javafx/scene/control/skin/
此文件被加载com/sun/javafx/scene/control/skin/FXVKSkin.java
负责加载TextBoard.txt
文件。浏览javafx源文件(包含在jdk中并包含在javafx-src.zip
中)以查看它是如何处理的。也许这会给你足够的信息来加载你自己的TextBoard.txt文件。
我发现你的问题,同时试图符合相同的事情。 我花了一天试图让javafx显示一个AZERTY键盘,我找到了一个解决方案!
那么让我清楚一点:javafx根本没有办法拥有一个azerty键盘,所以你必须小心翼翼。
解决方案的波纹管不是一个完美的解决方案,每次更新javafx时都必须重复一遍,但它可以让您极其自定义键盘,远远超过beyong querty和azerty。
SOLUTION 1(脏,但工程)
你需要编辑JDK附带
步骤JavaFX的文件的文件:
去的JDK(以Mac:/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home)
进入jre/lib/ext和cop y javafx jar将jfxrt.jar调用到桌面上的文件夹中。
安装Emacs,如果没有它,打开复制的jar文件,用这个软件
浏览文件列表搜索COM /阳光/ JavaFX的/场景/控制/护肤/ TextBoard.txt 的列表从AZ排序,所以使用它(有超过6000个文件)。
打开它,在这里你是。改变任何顺序让你快乐。我加入了azerty命令。
将jfxrt.jar保存并复制回原来的位置。完成。
注意:不要尝试提取罐和重新压缩它,因为JDK保留的文件索引列表将无法正常工作。
结果:azerty javafx virtual keyboard in action
解决方案2(干净的,但我没有完成它)
Whene我挖成JavaFX类,我发现,该类负责加载TextBoard.txt文件奠定了键盘是FXKVSkin 这个类是为了接收其他类型的键盘,而不是默认的Qwerty默认的。 所有你需要做的就是在代码中添加此:
textFieldThatYouUse.getProperties()把(FXVK.VK_TYPE_PROP_KEY, “mykeyboard”)。
其中mykeyboard是一个您创建的文件,如TextBoard.txt,名为MykeyboardBoard.txt(大写字母很重要)。
FXKVSkin将寻找一个名为MykeyboardBoard.txt的文件,这里是我的冒险结束的地方。 您将需要使FXKVSkin找到您的文件,我试图通过在运行时解决方案Here的类路径添加文件,但它没有奏效。
如果任何人都可以解决这个问题,请添加它作为答案,这将是一个不太脏的解决方案。
希望解决方案能够帮助一些非英语用户! :p