JTextField dúvida?!

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

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!

            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();
                    
                }                
            });

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();
        
    }                
});

Um JFormattedTextField é uma boa pedida tbm :smiley:

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

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.