Mascara ao sair do campo qual método construir?

Olá, estou tetando fazer um método de máscara para realizar a formatação assim que o usuário terminar de digitar e for para o próximo campo. As formatações que preciso fazer é de CPF ou CNPJ, o objetivo do método é verificar se tem 11 caracteres referente ao CPF e aplicar a máscara em cima do que o usuário digitou, caso seja 14 aplica a do CNPJ. Já tentei desta forma, mas não deu certo!!

private void mascaraCpfCnpj() {
if (this.txtProcFJ.getText().length() < 11) {
this.txtProcFJ.setText(null); // CPF/CNPJ
} else if (this.txtProcFJ.getText().length() == 11) {
//---------------------inicia campo cpf-------------------------------------------
try {

        javax.swing.text.MaskFormatter format_textField4 = new javax.swing.text.MaskFormatter("###.###.###-##");

        this.txtProcFJ = new javax.swing.JFormattedTextField(format_textField4);

    } catch (Exception e) {
    }
}

}

Uma alternativa é fazer da seguinte forma:
ps: com jFormattedTextField

         try {
            String mask = "###.###.###-##";

            if (seujFormatedTextField.getText().length() > 11) {
                mask = "##.###.###/####-##";
            }

            MaskFormatter mf = new MaskFormatter(maskFormat); 
            mf.setValidCharacters("0123456789");
            
            seujFormatedTextField.setFormatterFactory(new DefaultFormatterFactory(mf));
            mf.setPlaceholderCharacter(' ');
            mf.install(seujFormatedTextField);
                       
        } catch (Exception ex) {
            System.err.printiln("Erro ao tentar formatar campo. Erro: " + ex.getMessage());
        }
1 curtida