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.
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);
}