当焦点进入TextField
时,触摸屏键盘不会出现。
我想这是因为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 );
}
这是一个变通办法。你发现更好的方法了吗?
这是展示Windows原生虚拟键盘的一种很酷的方式(我觉得它比JavaFX要好得多)。
是否使用VM参数运行应用程序
-Dcom.sun.javafx.isEmbedded=true
-Dcom.sun.javafx.virtualKeyboard=javafx
最后一个也应该采用参数"native",但它也为我显示了JavaFX键盘。因此,为了显式显示Windows键盘,我自己也在寻找一些帮助:)