Clavier virtuel de JavaFX

Arguments JVM

On peut ajouter les arguments suivant :

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

Les deux premières lignes ne sont pas obligatoires pour afficher le clavier virtuel. Elles sont utiles seulement si vous êtes dans un environnement embarqué et tactile.

System Property

Vous pouvez modifier les propriétés avec System.setProperty

Il faudra modifier les propriétés avant l'initialisation de JavaFX.

System.setProperty("com.sun.javafx.touch", "true");
System.setProperty("com.sun.javafx.isEmbedded", "true");
System.setProperty("com.sun.javafx.virtualKeyboard", "javafx");

Exemple

package test;

public class Main {

public static void main(String[] args) {

   /* set property avant le démarrage de l'application JavaFX */

   /* nécessaire pour les écran tactiles */
   //System.setProperty("com.sun.javafx.touch", "true");

   /* nécessaire pour les projets embarqués */
   //System.setProperty("com.sun.javafx.isEmbedded", "true");

   // Clavier virtuel
   System.setProperty("com.sun.javafx.virtualKeyboard", "javafx");
  
   App app = new App();
   app.launchApp(args);
   
  }

}
package test;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.ScrollPane.ScrollBarPolicy;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class App extends Application {

    public void launchApp(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {

        /*
         * 4 types : text (0), numeric (1), url (2), email (3)
         */

        Label urlFieldLabel = new Label("URL :");
        TextField urlField = new TextField();
        //Clavier virtuel avec le type URL
        urlField.getProperties().put("vkType", "url");


        Label emailFieldLabel = new Label("Email :");
        TextField emailField = new TextField();
        //Clavier virtuel avec le type email
        emailField.getProperties().put("vkType", "email");


        Label numberFieldLabel = new Label("Nombres :");
        TextField numberField = new TextField();
        //Clavier virtuel avec le type numérique
        numberField.getProperties().put("vkType", "numeric");


        Label textAreaLabel = new Label("Zone texte :");
        TextArea textArea = new TextArea();
        //Clavier virtuel avec le type texte
        textArea.getProperties().put("vkType", "text");


        /* Mise en page très simple. Les éléments sont les uns après les autres avec un défilement si nécessaire */
        VBox panel = new VBox(urlFieldLabel, urlField, emailFieldLabel, emailField, numberFieldLabel, numberField,
    textAreaLabel, textArea);
 ScrollPane scrollPane = new ScrollPane(panel)

 primaryStage.setScene(new Scene(scrollPane));
 primaryStage.show();
    }

}

Le clavier virtuel de type text :

Le clavier virtuel de type numeric :

Le clavier virtuel de type email :

Le clavier virtuel de type url :

Commentaires