Bonjour,
J'ai un champ de texte (Integer prix) qui dois supporter seulement des entiers et donc je dois faire le contrôle de saisie or j'ai consulter les propositions dans le site et aucune d'elle m'a aidée.
Version imprimable
Bonjour,
J'ai un champ de texte (Integer prix) qui dois supporter seulement des entiers et donc je dois faire le contrôle de saisie or j'ai consulter les propositions dans le site et aucune d'elle m'a aidée.
Utiliser un objet de TextFormatter sur TextField. Le text formatter doit être paramétrer avec un filtre de type UnaryOperator
voici un exemple:
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
35
36
37
38
39 import java.util.function.UnaryOperator; import java.util.regex.Pattern; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.TextField; import javafx.scene.control.TextFormatter; import javafx.scene.layout.StackPane; import javafx.stage.Stage; /** * * @author */ public class IntegerTextField extends Application { @Override public void start(Stage stage) throws Exception { Pattern intPattern = Pattern.compile("-?\\d*"); UnaryOperator<TextFormatter.Change> filter = change -> { if (intPattern.matcher(change.getControlNewText()).matches()) { return change; } return null; }; TextFormatter textFormatter = new TextFormatter(filter); TextField textField = new TextField(); textField.setTextFormatter(textFormatter); StackPane root = new StackPane(textField); stage.setScene(new Scene(root)); stage.show(); } public static void main(String[] args) { launch(args); } }