@Override
    public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
        String texto = getText(0, getLength());
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (!Character.isDigit(c)) {
                return;
            }
        }

        if (texto.length() < MascaraCurrency.NUMERO_DIGITOS_MAXIMO) {
            super.remove(0, getLength());
            texto = texto.replaceAll("\\.", "").replaceAll(",", "");
            StringBuilder s = new StringBuilder(texto + str);

            if (s.length() > 0) {
                // Deletar possiveis zeros a esquerda
                while (s.length() > 0 && s.charAt(0) == '0') {
                    s.deleteCharAt(0);
                }
            }
            // Colocar zeros das casas decimais pelo menos tres caso o campo seja vazio
            while (s.length() < 3) {
                s.insert(0, "0");
            }

            s.insert(s.length() - 2, ",");
            if (s.length() > 6) {
                s.insert(s.length() - 6, ".");
            }
            if (s.length() > 10) {
                s.insert(s.length() - 10, ".");
            }
            super.insertString(0, s.toString(), a);
        }
    }