Permitir letras e espaços no jTextField do Java Net Beans

Olá!

Gostaria de permitir espaços no jTextField que criei. Sou completamente iniciante, mas consegui bastante coisa no site gui.
Meu problema é que no bloqueio de letras eu preciso que ele não bloquei também espaços. Segue o meu código:

//Form pra bloquear letra Inicio

public class Limitar_Letras extends PlainDocument
{
private int iMaxLength;
public Limitar_Letras(int maxlen)
{
super();
iMaxLength = maxlen;
}
@Override
public void insertString(int offset, String str, AttributeSet attr)
throws BadLocationException
{
if (str == null)
return;
if (iMaxLength <= 0) // aceitara qualquer no. de caracteres
{
super.insertString(offset, str, attr);
return;
}
int ilen = (getLength() + str.length());
if (ilen <= iMaxLength) // se o comprimento final for menor…
super.insertString(offset, str.replaceAll("[^aA-zZ]", “”), attr);
else
{
if (getLength() == iMaxLength)
return; // nada a fazer
String newStr = str.substring(0, (iMaxLength - getLength()));
super.insertString(offset, newStr, attr);
}
}
}

//Fim

Tentei fazer assim, mas não funcionou:
super.insertString(offset, str.replaceAll("[^ -zZ]", “”), attr); //com espaço antes do -
super.insertString(offset, str.replaceAll("[^SPACE-zZ]", “”), attr); //Nome da tecla
super.insertString(offset, str.replaceAll("[^""-zZ]", “”), attr); //Não aceita o vazio
super.insertString(offset, str.replaceAll("[^null-zZ]", “”), attr); //Null fica como caractere

Estou sem saída, não sei mais o que tentar. Como sou iniciante total este foi o único código que consegui entender até agora e não sei se é possível fazer por ele.

Desde já, obrigado a todos pelo prazer em ajudar. Espero um dia poder contribuir.

Não sei se entendi correntamente, vc está tentando permitir somente letras e espaços(bloqueando números)?

se for pode trocar:

super.insertString(offset, str.replaceAll("[^ -zZ]", ""), attr); //com espaço antes do -
super.insertString(offset, str.replaceAll("[^SPACE-zZ]", ""), attr); //Nome da tecla
super.insertString(offset, str.replaceAll("[^""-zZ]", ""), attr); //Não aceita o vazio
super.insertString(offset, str.replaceAll("[^null-zZ]", ""), attr); //Null fica como caractere

por

setTextField.addKeyListener(new KeyAdapter() {
			public void keyTyped(KeyEvent e) {
				char c = e.getKeyChar();
				if(Character.isDigit(c)) {
					Toolkit.getDefaultToolkit().beep();
					e.consume();
				}
			}
		});

Olá Samuel!

Eu vi alguns códigos muito parecido com este que me passou. Mas eu não entendi eles e consequentemente não sei como implementá-los.
Vou ver se consigo adaptar a sua idéia ao meu código atual que bloqueia números e símbolos, mas não permite digitar espaço e eu preciso do espaço para separar o nome completo. Exl.: “Nome Sobrenome1 Sobrenome 2”.

Se entendeu melhor minha lógica e tiver uma alternativa para o código que estou usando me ajuda muito.

vou comentar o código, ve se assim fica melhor de entender

seuTextField.addKeyListener(...) fica no mesmo escopo que ficaria seuTextField.setText(...)

seutextField.addKeyListener(new KeyAdapter() {//adicione isso dentro do seu construtor(se for swing) ou do método start(se for javafx
//essta linha acima vai ADICIONAR um LISTENER ao seu TextField que vai "ouvir" se o varacter digitado foi um número 
			public void keyTyped(KeyEvent e) {//Aqui é um método padrão do java que dispara quando um caractere é inserido no TextField que foi adicionado
				char c = e.getKeyChar();
				if(Character.isDigit(c)) { //se o caractere armazenado na variavel 'c' for um dígito(número)
					Toolkit.getDefaultToolkit().beep(); //essa lionha não é realmente necessária, é só pra apitar
					e.consume(); //bloqueia a inserção desse caracter
				}
			}
		});

Samuel, agora entendi o código. Cara que top, ficou bem menor e vai direto ao ponto.

Porém neste não identifiquei como fazer o bloqueio de quantidade de números digitados. Ex.;
No campo Nome quero que tenha permissão no máximo de 50 caracteres texto digitado.
Dá para fazer isso neste código? Sinto muito pela ignorância, mas realmente não conheço muito de Java, comecei o mês passado, mas estou aprendendo rápido.
Meu código ficou assim (usei outros fóruns para complementar minha solução e bloquear o dígito de caracter especial):

//Início do código
TXF_Nome.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
if (!(Character.isLetter© || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_SPACE))) {
e.consume();
}
}
});
//Fim

tenta assim:

TXF_Nome.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
if (!(Character.isLetter(c) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_SPACE)) || TXF_Nome.getText().length() >=50) { //troque o 50 pla quantidade máxima que vc quer permitir
e.consume();
}
}
});
//Fim


Consegui resolver assim:
//Início
seujTextFiled.addKeyListener(new KeyAdapter() { //Este código bloqueia números e caracter especial. Permite Letras e espaços//
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
if (!(Character.isLetter© || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_SPACE))) {
e.consume();
}
}
});
seujTextFiled.setDocument(new Limitar_Quantidade(3)); //Este Código limita a quantidade de dados digitados//
//Fim

Muito obrigado pelo auxílio onde pude chegar a uma conclusão plausível.
Abç!