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

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