Utilizando mascara no componente TextField do JavaFx

0 respostas
programaçãojava
B

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;
        }
    }
Criado 7 de outubro de 2016
Respostas 0
Participantes 1