JTextField apenas Letras

Boa Tarde

Tenho um probleminha que eu sei que é simples para vcs…

eu gostaria de saber se tem algum metodo, mascara para digitar apenas letras maiusculas bloqueando a entrada de outros caracteres no JTextField…como *&%$#…
eu consegui aqui bloquear apenas numeros, e ja fiz muitas comparações inadequadas…

obrigado

Dá uma olhada na classe JFormattedTextField

Abraço!

Você pode usar algo do tipo

formatonome = new MaskFormatter("*****************************************************");
formatonome.setValidCharacters(" abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");

Não sei se apareceu na 1ª msg

[code]textoNome = new JFormattedTextField();

formatonome = new MaskFormatter("**************************");

formatonome.setValidCharacters(“ABCDEFGHIJKLMNOPQRSTUVWXYZ”);

formatonome.install(textoNome);[/code]

Obrigado Cassio e aangreen
era isso mesmo que eu precisava.
abraços

amigo eu analisei o codigo e pensei que ia compilar.
quando apliquei no projeto não rolou acho que eu esqueci de alguma coisa ai , alguem pode me ajudar

tfNome=new JFormattedTextField();
try{
MaskFormatter formatNome = new MaskFormatter("**************************");
tfNome.setValidCharacters(“ABCDEFGHIJKLMNOPQRSTUVWXYZ”);
formatNome.install(tfNome);
}catch (Exception efn){}

erro:--------------------Configuration: --------------------
C:\Documents and Settings\Thiago Passos\Desktop\Projeto ubs jd iva\cadastroPaciente.java:44: cannot find symbol
symbol : method setValidCharacters(java.lang.String)
location: class javax.swing.JFormattedTextField
tfNome.setValidCharacters(“ABCDEFGHIJKLMNOPQRSTUVWXYZ”);
^
Note: C:\Documents and Settings\Thiago Passos\Desktop\Projeto ubs jd iva\cadastroPaciente.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 error

Process completed.

algume me ajuda ai por favor

[/quote]Amigo,

Uma dica …

Insira esse médodo em sua aplicação


	private MaskFormatter setMascara(String mascara) {
		MaskFormatter mask = null;
		try {
			mask = new MaskFormatter(mascara);
		} catch (ParseException e) {

			e.printStackTrace();
		}
		return mask;
	}

Em seu JFormattedTextField … vc faça assim …


Espero ter ajudado  :D :D

Falowww
tfNome=new JFormattedTextField(setMascara("UUUUUUUUUU");

[quote]
Dicas:
# => Usa número válido, usa Character.isDigit
=> Caractere de escape, usado para escape de qualquer caractere de formato especial
U =>Qualquer caractere(Character.isLetter). Todas as letras minúsculas são transformadas em maiúsculas.
L => Qualquer caractere(Character.isLetter). Todas as letras maiúsculas são transformadas em minúsculas.
A => Qualquer caractere ou digito (Character.isLetter ou Character.isDigit)
? => Qualquer caractere
* => Qualquer coisa
H => Qualquer caractere hexadecima(0-9, a-f ou A-F)

Isso limita a quantidade de caracteres, não?

Um outro jeito:

JTextField field = new JTextField();
field.setDocument( new PlainDocument()
{
	@Override
	public void insertString( int offs, String str, AttributeSet a )
			throws BadLocationException
	{
		//normalmente apenas uma letra é inserida por vez,
		//mas fazendo assim também previne caaso o usuário
		//cole algum texto
		for( int i = 0; i < str.length(); i++ )
			if( Character.isLetter( str.charAt( i ) ) == false )
				return;

		super.insertString( offs, str, a );
	}
} );

Aquele método que passei, também limita a quantidade de caractere no JFormatterTextField.

Caro você queira somente uma 5 letras e a primeira vc queira que em maiusculo.

É só fazer assim…

tfNome=new JFormattedTextField(setMascara("ULLLL");

Pronto … ele ficou condicionado a receber apenas 5 caracteres e com a primeira em maiuscula.

Certo !!!

valew pela ajuda ai…
mas agora tem o seguinte problema como que eu faço para dar espaço ao digitar um nome por exemplo (" Thiago Passos")
só fica assim ThiagoPassos, alguem pode me ajudar aiii??
segue o meu codigo.

if(e.getSource()==tfNome)
{
for(int i=0;i<str.length();i++)
{
if(str.charAt(i)==’.’)
b++;
}
if(b>2)
{
e.setKeyChar(’ ');
}//não faz nada

		if(e.getKeyChar()>='a' && e.getKeyChar()<='z' || e.getKeyChar()=='.')
		{
		}
		else
		{
		
			if(str==null)
				aux.setText(" ");
			else
			{
				int q=str.length();
				for(int i=0;i<q-1;i++)
				{
					if(str.charAt(i)>='a' && str.charAt(i)<='z' || str.charAt(i)=='.')
					
						str2+=str.charAt(i);
				}
				aux.setText(str2);
			}
			
		}
}

Bem para escrever espaços é so habilitar o espaço como caracter que também possa ser escrito!

Eu tenho outro problema, formatei uma JFormattedTextField para receber apenas 9 digitos, com o seguinte codigo:

[code] text = new JFormattedTextField();
text.setBounds(new Rectangle(21, 60, 182, 21));

		MaskFormatter formatonome;
		try {
			
			formatonome = new MaskFormatter("#########");
			formatonome.setValidCharacters("0123456789");   
			formatonome.install(text);
		
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}[/code]

Mas quando vou escrever na na caixinha está cheia de espaços. não há forma te tirar todos esses espaços?
Já tentei o text.setValue(""), mas depois perde toda a configuração de feita pelo MASKFORMATTER. :?
Têm alguma sugestão de como resolver este problema?

o que seria essa formato nome ?

A variavél formatonome é uma variavél do tipo MaskFormatter, que esta declarada no inicio da class!

Abra um tópico e refaça sua pergunta.

[]'s