JavaFX : Control TextField input
mikis69
Messages postés
174
Statut
Membre
-
otaku-boy Messages postés 109 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
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
-
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); }