我在打开的 jdk 8 中使用 javafx 虚拟键盘。有时我必须访问虚拟键盘,以防止它在某些文本字段获得焦点时显示。操作员必须扫描多个条形码的屏幕就是一个例子。这个虚拟键盘很碍事。使用 open jdk 8,我们可以像这样禁用虚拟键盘:
FXVK.detach(); //导入“com.sun.javafx.scene.control.skin.FXVK”后
我们现在正在升级到 open jdk 15 并使用 gradle 构建我们的 UI。“com.sun.javafx.scene.control.skin.FXVK”不再可以通过带有 gradle 的模块化项目进行访问。我不相信使用不同的虚拟键盘是一种选择,所以任何人都可以解释如何在 java 8 之后访问这个 FXVK 类吗?
有没有办法使用 --add-exports 或 --patch-module 与 JAR 来修补 JavaFX 以访问内部类?
下面是显示此问题的示例项目的代码。
这是 JavaFX 应用程序类,它仅显示一个文本字段并显示我可以与 java 8 一起使用以不显示虚拟键盘的代码。
package com.test.sampleapp.application;
////not accessible in java 15
//import com.sun.javafx.scene.control.skin.FXVK;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends Application{
public static void main(String[] args)
{
launch(args);
} …Run Code Online (Sandbox Code Playgroud)