2016-08-02 110 views
0

我有一個桌面應用程序,將在沒有鍵盤的計算機上使用,輸入將在觸摸屏上。從eclipse運行時,我可以使虛擬鍵盤顯示在文本框上。我使用了這些參數javafx以編程方式爲虛擬鍵盤設置參數

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

以下鏈接顯示我在何處添加參數。 how to add command line parameters when running java code in Eclipse?

當我製作一個可運行jar文件時,鍵盤不顯示出來。我正在尋找一種以編程方式設置這些參數的方法,以便可運行jar文件將在任何計算機上顯示虛擬鍵盤。任何幫助將不勝感激。

回答

0

唯一可行的解​​決方案,我可以找到這裏 Gradle build for javafx application: Virtual Keyboard is not working due to missing System property

來創建一個包裝類和調用應用程序原有的主方法之前設置系統屬性。

public class MainWrapper { 

    public static void main(String[] args) throws Exception 
    { // application - package name 
     Class<?> app = Class.forName("application.Main");   
     Method main = app.getDeclaredMethod("main", String[].class);  
     System.setProperty("com.sun.javafx.isEmbedded", "true"); 
     System.setProperty("com.sun.javafx.touch", "true");   
     System.setProperty("com.sun.javafx.virtualKeyboard", "javafx");  
     Object[] arguments = new Object[]{args}; 
     main.invoke(null, arguments); 
    } 
} 

當使可運行jar文件指向啓動配置的MainWrapper類時。

1

JVM的-D選項設置系統屬性。所以,你可以通過執行實現相同的以下內容:

public class MyApplication extends Application { 

    @Override 
    public void init() { 
     System.setProperty("com.sun.javafx.touch", "true");   
     System.setProperty("com.sun.javafx.isEmbedded", "true");   
     System.setProperty("com.sun.javafx.virtualKeyboard", "none"); 
    } 

    @Override 
    public void start(Stage primaryStage) { 
     // ... 
    } 
} 
+0

嗨,我試過了,但它從來沒有爲我工作。林不知道,但參數運行應用程序之前,也許不會生效。我剛剛發現了一個工作解決方案,但它可能是一個解決方法,創建另一個類,一個包裝類,它將設置這些參數,然後啓動主類。 http://stackoverflow.com/questions/32373313/gradle-build-for-javafx-application-virtual-keyboard-is-not-working-due-to-miss –

+0

感謝您的快速回復。 –