JavaFX : Control TextField input

mikis69 Messages postés 174 Statut Membre -  
otaku-boy Messages postés 109 Statut Membre -
Bonjour la communauté,

Pour le contexte, j'essaie de faire une appli de bureau avec JavaFX.

Juste une petite question un peu bête :

- J'ai un TextField et j'aimerai le formatter pour que ce soit un TextField "pour les numéros de téléphone" (0477/40.00.09)

Malheureusement, je n'arrive pas à dire au TextField que le '/' et les '.' doivent toujours être affichés. De plus, je veux que lorsque les quatres premiers chiffres sont entrés, le TextField passe directement le curseur derrière le '/'.

Comment pensez-vous que je puisse y parvenir ?

Merci de votre aide,

Mikis

1 réponse

  1. otaku-boy Messages postés 109 Statut Membre 140
     
    Utilise FXML (stp) et l'écouteur d’événement onKeyReleased (avec une méthode dans ton contrôleur) dont voici un code partiel. Je n'arrive pas à faire mieux, désolé ...

    J'ai créé un textfield dans mon fxml et je lui ai mis un fx:id (text, car je suis TRÈS créatif) et j'ai créer un attribut de type Textfield dans mon contrôleur.

    String number = this.text.getText();
    		if(number.length()<=4) {
    			//Cette ligne lance une exception si un des 4 premiers caractères est autre chose qu'un chiffre
    			if(number.length()>0)
    				//Pour éviter de lancer une exception inutile quand on efface le dernier chiffre écrit
    				Integer.parseInt(number);
    			if(this.text.getText().length()==4)
    				//Rajoute le slash
    				this.text.appendText("/");
    		}else {
    			int lesserLimit = this.text.getText().startsWith(".") ? this.text.getText().length()-1 : (this.text.getText().length()>=7? this.text.getText().length()-2 : 5);
    			number = this.text.getText().substring(lesserLimit,number.length());
    			System.out.println("1er "+number);
    			if(number.length()%2==0 && number.length() !=0)
    				this.text.appendText(".");
    			System.out.println(number);
    		}
    
    0