Só quero maiúsculas no meu JTextField

Gente…

Muito provavelmente tenha um jeito muito fácil, uma propriedade lá escondidinha, como a InpuMask do Fox ou o Charcase do Delphi, mas eu juro que procurei no java e não achei…

Como faço para que um usuário não possa digitar letras minúsculas em um campo? Sei que posso tratá-lo depois da sua perda do foco com o toUpper, também posso usar aquele evento que trata tecla por tecla pressionada e convertê-lo na hora (até funciona mas não achei muito legal, nao), porém ainda nutro esperanças de que exista uma maneira mais fácil que isso.

Agradeço a quem me ajudar
Bonissauro

JFormmatedTextField nele passando no construtor um MaskFormmated…

MaskFormatter _fm = new MaskFormatter("UUUUUUUU");
JFormattedTextField _tf = new JFormattedTextField(_fm);

Se não me engano o U no MaskFormatter é responsavel por deixar tudo UperCase :wink:

Mas aí é outra classe que não a JTextField. Como desenvolvo os forms pelo matisse do NetBeans fica complicado isso, acho eu… Prefiro gravar no BD com o toString, entao… Não me agrada muito o usuário digitar uma coisa e gravar outra, mas fazer o que…

Em todo caso, valew pela dica

Bonissauro

a) JFormattedTextField extends JTextField
b) JFormattedTextField está disponível no Form Editor do NetBeans também
c) Se você tiver coragem, pode tentar alterar os tipos dos textfields que você já criou (arquivo .form). Você precisa entender um pouco como é que as coisas são feitas.

  <SubComponents>
    <Component class="javax.swing.JFormattedTextField" name="jFormattedTextField1">
      <Properties>
        <Property name="text" type="java.lang.String" value="jFormattedTextField1"/>
      </Properties>
    </Component>
    <Component class="javax.swing.JTextField" name="jTextField1">
      <Properties>
        <Property name="text" type="java.lang.String" value="jTextField1"/>
      </Properties>
    </Component>
  </SubComponents>

Não é que o troço tava la mesmo e não vi ?!?!?!?!?!

Foi mal, gente…

Valew pela dica, meu bruxo…

Abraco a todos
Bonissauro

Mas kartler, desta forma a quantidade de caracteres é limitada, não?

Penso que a forma correta, apesar de mais trabalhosa é usando Document:

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

[quote=LIPE]Mas kartler, desta forma a quantidade de caracteres é limitada, não?

Penso que a forma correta, apesar de mais trabalhosa é usando Document:

JTextField tf = new JTextField(); tf.setDocument( new PlainDocument() { @Override public void insertString( int offs, String str, AttributeSet a ) throws BadLocationException { super.insertString( offs, str.toUpperCase(), a ); } } ); [/quote]

Obrigado pela dica.