JTextField com apenas alguns números

Boa Tarde,
Estou precisando de uma classe que limite o número de caracteres de um JTextfield e que aceite apenas os digitos 0, 1 e 2.

Eu tenho a classe abaixo que Limita e permite aceitação de apenas números. Como eu poderia modificar ela para que a mesma aceite somente os números informados acima?

import javax.swing.JOptionPane;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class LimitedIntegerDocument extends PlainDocument
{
    private int maxlength;
    public LimitedIntegerDocument(){}

    public LimitedIntegerDocument(int maxlength)
    {
        super();
        this.maxlength = maxlength;
    }

    public void insertString(int offs, String str, AttributeSet a)
    {
        try
        {
            Integer.parseInt(str);
        } catch (NumberFormatException ex)
        {
            str = "";
        }

        try
        {
            boolean fixedLengh = (!((getLength() + str.length()) > maxlength));
            if (maxlength == 0 || fixedLengh)
            {
                super.insertString(offs, str, a);
            }
        } catch (BadLocationException e)
        {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }
}

É só fazer o if da linha 30 só entrar no insertString caso o intervalo esteja correto:

if ((maxlength == 0 || fixedLengh) && !str.contains("3") && !str.contains("4") && !str.contains("5") && !str.contains("6") && !str.contains("7") && !str.contains("8") && !str.contains("9")) {

PS: Há uma forma muito mais fácil de escrever esses contains com expressões regulares. Mas como não sabia se vc manjava ou não de regex, deixei do jeito braçal mas simples.

PPS: Não é uma boa testar só pelo str.equals(“0”) || str.equals(“1”) || str.equals(“2”) pq a String pode conter vários dígitos “12012”, caso tenha sido recortada e colada de algum lugar.