Bonjour,
Comment créer un TextBox qui n'accepte que les chiffres seulement?
Merci d'avance.
Version imprimable
Bonjour,
Comment créer un TextBox qui n'accepte que les chiffres seulement?
Merci d'avance.
J'ai peur de n'avoir jamais trouve de bonne solution a ce probleme (je n'ai pas fouille dans les methodes non-publiques de la classes).
Generalement je me contente de binder sur rawtext et si le text ne peut pas etre parse en nombre, je verouille les boutons de validation du formulaire et j'affiche une note d'erreur.
Tu peux voir avec les évènements du clavier et voir si la touche correspond à un chiffre.
Bonjour,
Enfin j'ai trouvé une solution (qui peut être optimisée : faute de temps), qui est basé sur les évènements clavier (suggestion de galien:ccool:)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 import javafx.scene.control.TextBox; import javafx.scene.input.KeyEvent; import java.lang.NumberFormatException; import javafx.scene.input.KeyCode; public class IntegerTextBox extends TextBox{ var newString = ""; var keyCode; init{ onKeyTyped = function (e: KeyEvent): Void { try{ /*Si les touches tapees ne sont pas les touches de supression*/ if((KeyCode.VK_BACK_SPACE != this.keyCode)and(KeyCode.VK_DELETE != this.keyCode)){ Integer.parseInt(e.char); //Sauvegarde de la valeur du textbox dans une variable this.newString = this.rawText; } } catch(ee:NumberFormatException){ /*En cas d'exception (caractere non chiffre tape on reaffiche l'ancien text*/ this.selectAll(); this.replaceSelection(this.newString); } } /*Selon la doc d'oracle onKeyTyped ne permet pas de recuperer le code de la touche du clavier donc on la recupere avec l'evenment onKeyPressed */ onKeyPressed = function (e: KeyEvent): Void { this.keyCode = e.code; } } }