Olá a todos(as)! Esse é um assunto bastante discutido, porém não encontrei nenhum tópico que abordasse uma forma mais pratica de se usar mascara nos componentes TextField do JavaFX
Vou deixar aqui o código fonte de uma classe que criei para trabalhar com mascara no javafx, e por fim o link de um vídeo que fiz para explicar como utilizar ela no seu projeto.
Bom o link do vídeo que explica sua aplicação é este:Clique Aqui
Segue o código fonte da classe:
[TextFieldFormatter.java](https://t.co/SMIjabrnIZ)
import java.text.ParseException;
import javafx.scene.control.TextField;
import javax.swing.text.MaskFormatter;
/**
*
* @author Marcos Ricardo Rodrigues
*/
public class TextFieldFormatter {
private final MaskFormatter mf;
private TextField tf;
private String CaracteresValidos;
private String mask;
public TextFieldFormatter() {
mf = new MaskFormatter();
}
public void formatter(TextField tf, String CaracteresValidos, String mask) {
try {
mf.setMask(mask);
} catch (ParseException ex) {
System.out.println(ex.getMessage());
}
mf.setValidCharacters(CaracteresValidos);
mf.setValueContainsLiteralCharacters(false);
String text = tf.getText().replaceAll("[\\W]", "");
boolean repetir = true;
while (repetir) {
char ultimoCaractere;
if (text.equals("")) {
break;
} else {
ultimoCaractere = text.charAt(text.length() - 1);
}
try {
text = mf.valueToString(text);
repetir = false;
} catch (ParseException ex) {
text = text.replace(ultimoCaractere + "", "");
repetir = true;
}
}
tf.setText(text);
if (!text.equals("")) {
for (int i = 0; tf.getText().charAt(i) != ' ' && i < tf.getLength() - 1; i++) {
tf.forward();
}
}
}
public void formatter(){
formatter(this.tf, this.CaracteresValidos, this.mask);
}
/**
* @return the tf
*/
public TextField getTf() {
return tf;
}
/**
* @param tf the tf to set
*/
public void setTf(TextField tf) {
this.tf = tf;
}
/**
* @return the CaracteresValidos
*/
public String getCaracteresValidos() {
return CaracteresValidos;
}
/**
* @param CaracteresValidos the CaracteresValidos to set
*/
public void setCaracteresValidos(String CaracteresValidos) {
this.CaracteresValidos = CaracteresValidos;
}
public String getMask() {
return mask;
}
/**
* @param mask the mask to set
*/
public void setMask(String mask) {
this.mask = mask;
}
}