Cambiar el ultimo caracter digitado

Cordial saludo a todos.
Mi problema es el siguiente:
Estoy validando el ingreso de informacion a un JTextField para que solo acepte letras y espacios, para ello hice lo siguiente:

private void txtNameUserKeyReleased(java.awt.event.KeyEvent evt) {
int k = (int) evt.getKeyChar();//k = al valor de la tecla presionada
if (!(k >= 97 && k <= 122 || k >= 65 && k <= 90 || k == 32)) {//Si el caracter ingresado es una letra
evt.setKeyChar((char) KeyEvent.VK_BACK_SPACE);
JOptionPane.showMessageDialog(null, "El caracter ingresado no es letra !!!", "Validando Datos",
JOptionPane.ERROR_MESSAGE);
}

}
Mi idea es que si el caracter ingresado no es valido lo borre o nisiquiera se pinte en la pantalla y con ese codigo no funciona ya intente reemplazar el caracter digitado por el codigo ASCII del BACK_SPACE y tampoco me funcionó.

Al guien me puede decir como lo hago ?

Mil gracias por su tiempo y conocimiento.
Gustavo

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

JTextField field =

 

O... puedes usar un formmated textfield que hacen precisamente lo que necesitas. Yo no los he usado, pero aquí esta un guía:

Estaría interesante que nos escribieras como lo resolviste.