JTextField dúvida?!

6 respostas
arm.jr

Como eu faço para um JTextField só aceitar caracteres em maiusculo?!

6 Respostas

cassio

Eu ACHO que não existe nenhu método pelo qual você poderia definir isso direto…
Acho que seria necessário implementar um evento que controlasse quando o textField estivesse focado e alguma tecla fosse pressionada… O tratamento de evento analisaria se a nova letra digitada é maiúscula ou minúscula. Caso fosse maiúscula, vc aceita o novo caractere, caso contrário ignora…

Falou!

thiago.correa
JTextField textField = new JTextField();
            textField.addKeyListener(new KeyAdapter() {

                public void keyTyped(KeyEvent arg0) {
                    if (new Integer( arg0.getKeyChar() ) < 65 || new Integer( arg0.getKeyChar() ) > 93)
                        arg0.consume();
                    
                }                
            });
thiago.correa

Uma maneira mais elegante de se resolver com expressão regular:

JTextField textField = new JTextField();
textField.addKeyListener(new KeyAdapter() {

    public void keyTyped(KeyEvent arg0) {
        Pattern p = Pattern.compile("[A-Z]");
        if (!p.matcher( new Character(arg0.getKeyChar()).toString() ).matches())
            arg0.consume();
        
    }                
});
davidbuzatto

Um JFormattedTextField é uma boa pedida tbm :smiley:

Matheus_Tardivo
JTextField tf = new JTextField();
tf.setDocument(new PlainDocument() {
	public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
		super.insertString(offs, str.toUpperCase(), a);
	}
});

Fonte: http://www.guj.com.br/posts/list/32409.java

Rodrigo_Manhaes

Costumo utilizar, com ótimos resultados, InputVerifier. O propósito original de objetos desta classe é não permitir a saída do foco do componente caso uma dada validação não seja satisfeita. Porém, pode ser utilizado também para alterar os dados na saída, como aplicar um toUpperCase(). Ele não transforma em maiúsculas ao digitar, mas pode garantir que quando o componente perder o foco, o seu conteúdo seja convertido em maiúsculas.

Criado 3 de julho de 2006
Ultima resposta 4 de jul. de 2006
Respostas 6
Participantes 6