5

当焦点进入 aTextField时,触摸屏键盘不会出现。

我想这是因为 JavaFx 应用程序不符合 Metro 标准?

我找到了一种弹出键盘的方法:

public class Controller {

   public static void showVirtualKeyboard(
      ObservableValue<? extends Boolean> observable,
      Boolean                            oldState,
      Boolean                            hasFocus )
   {
      if( hasFocus ) {
         try {
            Runtime.getRuntime().exec(
               "cmd /c \"C:\\Program Files\\Common Files\\microsoft " +
               "shared\\ink\\tabtip.exe\"" );
         }
         catch( final Throwable t ) {
            LogHelper.severe( t );
         }
      }
   }
}

在任何视图中:

final class VisualAnalysis extends GridPane implements IView {

   private final TextField tech = new TextField();

   @Override
   public void setController( Controller ctrl   ) {
      ...
      tech.focusedProperty().addListener( Controller::showVirtualKeyboard );
   }

这是一种解决方法。你发现更好的方法了吗?

4

1 回答 1

2

这是展示 Windows 原生虚拟键盘的一种很酷的方式(我觉得它比 JavaFX 键盘好得多)。

您是否使用 VM 参数运行应用程序

-Dcom.sun.javafx.isEmbedded=true
-Dcom.sun.javafx.virtualKeyboard=javafx

最后一个也应该采用参数“native”,但它也为我显示了 JavaFX 键盘。因此,为了明确显示 Windows 键盘,我自己正在寻找一些帮助:)

于 2014-12-10T14:27:22.607 回答