JavaFX : Control TextField input

Fermé
mikis69 Messages postés 168 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 11 février 2019 - 27 déc. 2017 à 00:00
otaku-boy Messages postés 99 Date d'inscription mardi 2 octobre 2012 Statut Membre Dernière intervention 6 janvier 2018 - 6 janv. 2018 à 11:06
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 99 Date d'inscription mardi 2 octobre 2012 Statut Membre Dernière intervention 6 janvier 2018 140
6 janv. 2018 à 11:06
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