Como identificar o que o usuário digitou em um JTextField?

Bom dia colegas !

Estou tentanto criar uma classe para garantir que o usuário só entre caracteres válidos em um JTextField.

Por exemplo, num campo CPF, entrar somente números.

Para configurar a quantidade de caracteres que podem ser digitados criei uma classe que extende PlainDocument e setei assim:

txtCpf.setDocument(new FixedLengthDocument(11));

Pensei que poderia usar a mesma classe não só para verificar se o tamanho máximo foi atingido, mas também se o caracter é válido.

No entanto não sei como verificar se o usuario digitou um numero, letra ou qualquer outro caracter.

Como iniciante que sou pensei em algo assim:


    public void insertString(int offset, String str, AttributeSet attr)
                            throws BadLocationException    {
       
        if (str == null) return;
        
        if (iMaxLength <= 0) {
            if (str.equals("0") ||
                str.equals("1") ||
                str.equals("2") ||
                str.equals("3") ||
                str.equals("4") ||
                str.equals("5") ||
                str.equals("6") ||
                str.equals("7") ||
                str.equals("8") ||
                str.equals("9") )  //é número
                super.insertString(offset, str, attr);
                return;
            else {
                etc, etc, etc
            }
        }

Mas não me pareceu a maneira mais elegante de fazer… (para não dizer mais inteligente)

Alguém pode me ajudar ?

Obrigado a todos.

Um abraço.