当前位置: 首页 > 知识库问答 >
问题:

以编程方式打开JavaFX虚拟键盘

慕容念
2023-03-14

你知道有什么解决办法吗?如果可能的话,我不想使用第三方库。

共有1个答案

龙亮
2023-03-14

我要回答我的问题,因为我找到了解决办法。

首先,我添加了一个事件监听器,用于网页上的所有输入标记,在页面加载后:

private void addEventListenersToDOM() {
    webview.getEngine().getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {
        @Override
        public void changed(ObservableValue<? extends State> ov, State oldState, State newState) {
            if (newState == State.SUCCEEDED) {
                JSObject win = (JSObject) webview.getEngine().executeScript("window");
                win.setMember("javaFXVirtualKeyboard", new JavaFXVirtualKeyboard());

                String script = 
                          "var inputsList = document.getElementsByTagName('input');" 
                        + "for (var index = 0; index < inputsList.length; ++index) { "
                        +      "inputsList[index].addEventListener('focus', function() { javaFXVirtualKeyboard.show() }, false); " 
                        +      "inputsList[index].addEventListener('focusout', function() { javaFXVirtualKeyboard.hide() }, false); "
                        + "}";
                webview.getEngine().executeScript(script);
            }
        }
    });
}

而重点,我是如何触发键盘显示和隐藏的:

public class JavaFXVirtualKeyboard {

    public void show() {
        FXVK.init(webview);
        FXVK.attach(webview);
    }

    public void hide() {
        FXVK.detach();
    }
}
 类似资料:
  • http://docs.oracle.com/javase/8/javafx/user-interface-tutorial/embedd.htm 有没有人在javafx应用程序中有过虚拟键盘的经验?我需要能够显示正常的键盘或数字键盘时,文本字段是聚焦的。

  • 问题内容: 我想在一个按钮中创建一个事件。 当我单击按钮时,我想打开Windows虚拟键盘。 您能帮我提供代码吗? 谢谢您的合作。 最好的祝福。 问题答案: 我认为这就是这么简单:

  • 我想永远不要像以编程方式显示/隐藏虚拟键盘一样隐藏虚拟键盘 或者(如果上面所说的不可能的话) 我想从虚拟键盘移除/隐藏/禁用下面(突出显示的绿色左下角)按钮。 在任何情况下都不要隐藏键盘,除非程序没有终止。 代码:你也可以在github上查看我的代码。

  • 我正在尝试为具有特定扩展名的文件在“打开”菜单中添加eclipse编辑器。我在org.eclipse.ui.editors扩展点中使用launcher实现了这一点,在launcher中我使用了“open editor”方法,它需要传递编辑器ID。有没有什么方法可以让我们以编程方式打开一个编辑器,而不需要传递编辑器ID呢?我们可以通过传递实现编辑器的类的实例以编程方式打开编辑器吗?..

  • 我想通过编程(从关联菜单)打开某个视图,我该怎么做? 我可以使用e3兼容层显示如下视图: e4的方法是什么?