JTextField deja de usar MaskFormatter después de ser borrado

Estoy haciendo un solucionador de Sudoku y para eso quiero que mis JTextFields solo acepten uno de los números 123456789 como entrada válida. Por lo tanto, uso un MaskFormatter junto con un JFormattedTextField. Sin embargo, cuando borro todos los TextFields haciendo .setText (""), el MaskFormatter ya no funciona. Después de borrar los cuadros de texto, puedo volver a escribir cualquier cosa en ellos. ¿Por qué y cómo lo soluciono?

Mi código es básicamente:

MaskFormatter formatter = new MaskFormatter("#");
formatter.setValidCharacters("123456789");
Font textFieldFont = new Font("Verdana", Font.BOLD, 30);
for (int i = 0; i < 9; i++) {
    for (int j = 0; j < 9; j++) {
        southPanel.setBorder(lineBorder);
        field[i][j] = new JFormattedTextField(formatter);
        field[i][j].setHorizontalAlignment(JTextField.CENTER);
        field[i][j].setFont(textFieldFont);
        southPanel.add(field[i][j]);
    }
}

Luego, cuando lo borro:

for (int i = 0; i < 9; i++) {
    for (int j = 0; j < 9; j++) {
        field[i][j].setText("");
    }
}

EDIT: Aquí está todo el código, no he escrito la mayor parte porque mi amigo lo hizo. Ahora me estoy encargando de arreglar un poco la GUI.

http: //dl.dropbox.com/u/4018313/SudokuSolver.zi

Además, después de algunas pruebas más, parece que después de borrar todos los cuadros, puede escribir muchos caracteres que no deberían estar allí, pero cuando hace clic en otro campo, todos desaparecerán. Luego, si hace clic en los otros cuadros, aparecerán los números que escribió anteriormente.

¡No entiendas esto!

Respuestas a la pregunta(2)

Su respuesta a la pregunta