JTextField qual a melhor maneira para na digitação somente caixa Maiúscula?

12 respostas
cyberlacs

Amigos estou rodando aqui no forum e tem milhares de Tópicos com a mesma pergunta e percebi que esta pendente.

Pergunto ao mais experientes.

Qual a maneira correta de fazer isto no Netbeans ???

veja os links com pesquisa >>>>> textfield uppercase

me retornou uma infinidade de tópicos.

http://www.guj.com.br/search?cx=partner-pub-9448585618971060%3A4001950301&cof=FORID%3A10&ie=UTF-8&q=textfield+touppercase&x=0&y=0&siteurl=www.guj.com.br%2Fjava%2F43782-jtextfield-apenas-letras

Em um caso eu fiz isto e funcionou MAS, tenho de fazer campo por campo, se Eu tiver mil campos terei de fazer um a um :cry: :cry: :roll:

private void tProcurarKeyReleased(java.awt.event.KeyEvent evt) { String temp = tProcurar.getText(); tProcurar.setText(temp.toUpperCase()); }

Fico no aguardo

Muito obrigado

12 Respostas

brmonteiro

voce quer que todos os seus campos do formulário seja em maiusculo é isso?

Lucas_Martinho

é tipo colocar alguma coisa tipo toUpperCase… algo parecido com isso

cyberlacs

Amigos pode ser um a um mesmo, o que estou querendo é ter uma solução que funcione, pois aqui no forum tem muitas dúvidas referente a este assunto que não esta solucionadas

Como eu disse anteriormente, Eu estou procurando uma solução correta para este tipo de duvida.

Estou testanto esta solução, e funciona, a pergunta é isto é correto, ou não

Observem que estou usando o código no KeyReleased

[code]private void tProcurarKeyReleased(java.awt.event.KeyEvent evt) {
String temp = tProcurar.getText();
tProcurar.setText(temp.toUpperCase());
} [quote]

Obrigado amigos

lina

Oi,

A melhor forma é implementar um classe que extends ao PlainDocument:

private 
	class			UpperCaseDocument 
		extends		PlainDocument 
	{
		@Override
		public 
		void			insertString(int an_length, String as_character, AttributeSet ao_attribute) 
			throws		BadLocationException 
                {
                    super.insertString(an_length, as_character.toUpperCase(), ao_attribute);
                }
}

Após isso, seta o novo documento em seus TextField.:

setDocument(new UpperCaseDocument());

Tchauzin!

M

Bom, você pode fazer o seguinte.

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

/**
 *
 * @author murilo
 */
public class UppercaseDocument extends PlainDocument {

    public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException {
        if (str == null) {
            return;
        }

        super.insertString(offset, str.toUpperCase(), attr);
    }
}

Use assim

jtextfield.setDocument(new UppercaseDocument());

Boa sorte

mauricioadl

se o seu projeto ja estiver pronto e existir muitos textfields para alterar, crie uma classe chamada JTextField estenda ela do JTextField o swing, reescreva o metodo getText e mude o seu import, assim aferara toda a classe de uma so vez.

lina

Oi,

Murilo_Ferreira … Ótima solução. Não sei porque é igual a minha… rsrs

Tchauzin!

M

lina
Hum, tem uma pequena diferença, validação.

Mas nem tinha reparado, e acabei duplicando mesmo.

lina

Oi,

Só um detalhe, ele nuca virá nullo (eu acho). Apenas vazio “”

Tchauzin!

M

lina
Não dá pra trabalhar por achismo, portanto uma validação nunca é demais.

lina

Murilo_Ferreira:
lina
Não dá pra trabalhar por achismo, portanto uma validação nunca é demais.

Oi,

Desculpe mestre dos magos.

Tchauzin!

cyberlacs

Poxa funcionou mesmo muito obrigado pela ajuda.

Só não entendi esta citação, teria como me dar mais dicas ???

Fico no aguardo :lol: :lol: :lol:

Criado 23 de novembro de 2011
Ultima resposta 24 de nov. de 2011
Respostas 12
Participantes 6