2016-08-02 36 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

だけの作業ソリューションは、ラッパークラスを作成し、アプリケーションのオリジナルのmainメソッドを呼び出す前に、システムのプロパティを設定 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

こんにちは、私はすでにそれを試みましたが、それは私のために働いたことはありません。 Imはわからないが、アプリケーションが実行される前に引数が有効にならない可能性があります。私はちょうど今、実際の解決策を見つけました。回避策、別のクラス、それらの引数を設定し、メインクラスを起動するラッパークラスを作成します。 http://stackoverflow.com/questions/32373313/gradle-build-for-javafx-application-virtual-keyboard-is-not-working-due-to-miss –

+0

速い返信に感謝します。 –

関連する問題