Je cherche une alternative de Swing InputVerifier à JavaFX TextField.JavaFX TextField: alternative pour Swing InputVerifier?
Le Swing InputVerifier empêche les entrées vérifiées.
Tenir compte du code Swing JTextField suivant:
InputVerifier iv = new InputVerifier() {
/* (non-Javadoc)
* @see javax.swing.InputVerifier#verify(javax.swing.JComponent)
*/
@Override
public boolean verify(JComponent input) {
JTextField tf = (JTextField) input;
if (!myRegExTool.matches(tf.getText())) {
return false;
}
return true;
}
};
jinstance.setInputVerifier(iv);
Je pourrais utiliser TextField.setOnKeyTyped ou un auditeur TextField.textProperty pour vérifier le texte tapé. Cependant cela n'empêchera pas le texte invalide d'entrer dans TextField. Je pourrais cependant supprimer le texte tapé qui ne vérifie pas, mais ce n'est pas une bonne solution.
Solution: Comme suggéré par James_D un TextFormatter avec un filtre est la solution parfaite
UnaryOperator<Change> textFilter = change -> {
String input = change.getText();
if (!myRegExTool.matches(input)) {
return null;
}
return change;
};
instance.setTextFormatter(new TextFormatter<String>(textFilter));
Utilisez un (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TextFormatter.html) [ 'TextFormatter'] avec un filtre. –
Merci. C'était la solution perferct ici. Pour obtenir le crédit, vous devez créer une réponse que je peux accepter (je pourrais l'éditer ensuite avec mon exemple de code). – DJViking