JavaFX - 生成App Jar时不显示虚拟键盘

时间:2015-11-02 16:57:27

标签: java intellij-idea javafx virtual-keyboard

我在 IntelliJ14.14 中创建了一个 JavaFX 应用程序,它将使用 JavaFX虚拟键盘。我在mainApp类控制器中添加了以下属性:

if (Meteor.isClient) {
    Meteor.startup(function ()
    {
        React.render(<TestComponent />, document.getElementById("render-target"));
    });
}

if (Meteor.isServer) {
    Meteor.startup(function () {
        // code to run on server at startup
    });
}


TestComponent = React.createClass({

    showAlert()
    {
        alert("On click!");
    },

    render()
    {
        return (
            <div><button onClick={this.showAlert}>Click Me</button></div>
          )
    }
});

当我从IntelliJ运行应用程序时,一切正常。虚拟键盘完美运行。

但是当我从 Build - &gt;生成应用程序的 Jar 文件时构建工件...... - &gt;构建并执行它,键盘永远不会显示,因为没有设置VM选项。

这是我缺少的东西......?

提前致谢...

修改

我找到了一种方法来完成这项工作,使用此命令从 cmd 运行文件:

public static void main(String[] args) {
    System.setProperty("com.sun.javafx.isEmbedded", "true");
    System.setProperty("com.sun.javafx.touch", "true");
    System.setProperty("com.sun.javafx.virtualKeyboard", "javafx");
    launch(args);
}

但是我想让它只是执行Jar文件......

修改

还有另一种方法可以实现我想要的......

在jar的同一个文件夹中创建一个文件 .bat 并输入:

java -Dcom.sun.javafx.isEmbedded=true -Dcom.sun.javafx.virtualKeyboard="javafx" -Dcom.sun.javafx.touch=true -jar myApp.jar 

因此,当执行 .bat 文件并启动jar文件时,系统属性会正确加载...

1 个答案:

答案 0 :(得分:3)

public class MyApp {  
    public static void main(String[] args) {  

        if (args.length == 0) {  
            try {  
                // re-launch the app itselft with VM option passed  
                Runtime.getRuntime().exec(new String[] {"java", "-Dcom.sun.javafx.isEmbedded=true", "-Dcom.sun.javafx.virtualKeyboard=\"javafx\"", "-Dcom.sun.javafx.touch=true", "-jar", "myApp.jar"});  
            } catch (IOException ioe) {  
                ioe.printStackTrace();  
            }  
            System.exit(0);  
        }  

        // Run the main program with the VM option set  
        //...  
        //...  
    }  
}