2015-07-10 60 views
2

我有一个javafx应用程序,应该在Windows平板电脑上以全屏模式运行。将虚拟键盘更改为AZERTY

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

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

回答

0

布局的定义包含在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文件。

0

我发现你的问题,同时试图符合相同的事情。 我花了一天试图让javafx显示一个AZERTY键盘,我找到了一个解决方案!

那么让我清楚一点:javafx根本没有办法拥有一个azerty键盘,所以你必须小心翼翼。

解决方案的波纹管不是一个完美的解决方案,每次更新javafx时都必须重复一遍,但它可以让您极其自定义键盘,远远超过beyong querty和azerty。

SOLUTION 1(脏,但工程)

你需要编辑JDK附带

步骤JavaFX的文件的文件:

  1. 去的JDK(以Mac:/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home)

  2. 进入jre/lib/ext和cop y javafx jar将jfxrt.jar调用到桌面上的文件夹中。

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

  4. 浏览文件列表搜索COM /阳光/ JavaFX的/场景/控制/护肤/ TextBoard.txt 的列表从AZ排序,所以使用它(有超过6000个文件)。

  5. 打开它,在这里你是。改变任何顺序让你快乐。我加入了azerty命令。

  6. 将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