【问题标题】:JavaFX WebView / WebEngine show on-screen-keyboard automatically for each text inputJavaFX WebView / WebEngine 为每个文本输入自动显示屏幕键盘
【发布时间】:2012-10-03 08:17:23
【问题描述】:

背景/上下文:

我正在使用 JavaFX 开发基于触摸屏的信息亭应用程序。该应用程序集成了浏览器——WebView。问题是所有用户输入都必须通过屏幕键盘(SW键盘)进行

如果有一个选项可以在 WebView/WebEngine 上为任何获得/失去焦点的 HTML 文本输入元素注册事件处理程序,那就太好了,这样我就可以在屏幕键盘上显示/隐藏。
即使我搜索了互联网,我也没有找到这种功能。

我的问题:

JavaFX / WebView 是否为这些情况提供任何支持?

如果你要解决这个问题,你会采取什么方法?

到目前为止我的解决方案:

我有一个小按钮(位于屏幕的一个角落),允许用户显示/隐藏屏幕键盘。由于他们必须手动执行此操作,因此非常烦人。尤其是在浏览(消费信息)和文本输入经常变化的网站上。

【问题讨论】:

    标签: webview keyboard javafx touchscreen


    【解决方案1】:

    如果可以选择在 WebView/WebEngine 上为任何获得/失去焦点的 HTML 文本输入元素注册事件处理程序,这样我就可以在屏幕键盘上显示/隐藏。

    这样做的潜在策略:

    1. jdk8 preview 开头。
    2. 使用-Dcom.sun.javafx.isEmbedded=true 运行应用程序以启用虚拟键盘。
    3. 使用 webengine.executeScript 技术来embed jQuery into the target page
    4. jQuery focus handler绑定到相关的html元素。
    5. 在 jQuery 焦点处理程序中创建一个 Upcall from JavaScript to Java
    6. 收到上电后使用JavaFX's Virtual Keyboard
    7. 当用户在键盘中输入值时,调用 executeScript 来设置相应 html 字段的值。

    有些部分可能有点(或完全)不稳定,但也许其他部分可能对您有用。

    将来,如果嵌入式设备的触摸屏平台支持 WebView,我猜它开箱即用,它可以很好地与虚拟键盘配合使用。

    【讨论】:

    • 非常感谢您的回答——这是一个很好的灵感来源!!!它有效!为了解决我的问题,我只使用了点:3.- 5. of Your answer。作为虚拟键盘,我使用了与 code.google.com/p/fx-onscreen-keyboard 类似的解决方案,它利用了 Robot 类,因此我可以跳过第 6 和第 7 点。此外,所有这些都可以用 JDK7 实现。我实际上并没有设法让 JavaFX 虚拟键盘工作……。是否有任何 JavaFX VKB 的工作示例或任何键盘图像 - 只是为了我的好奇心和比较解决方案?
    • 我也没用过虚拟键盘。我从JavaFX issue tracker cases 复制了 BeagleBoard ARM 计算机显示的键盘图像。我将图像放入答案中。
    • 嗯,我的平台是 x86。这可能是 JavaFx 虚拟键盘的问题,因为我不知道它是否已经被支持。无论如何,我可以在没有 JavaFx VK 的情况下生活,因为我的核心问题是如何检测对键盘的需求。这解决了!你对我很有帮助。再次感谢! (我会赞成答案,但我还不能这样做:-)
    猜你喜欢
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多