Problema com Document e MaskFormatter no mesmo campo

3 respostas
mateusviccari

Tenho um jFormattedTextField no qual eu seto o Document dele e tambem o formatterFactory.
no document eu coloco um Document que eu criei que a cada letra que o cara digitar ele poe como maiusculo. poreme ele deixa o caradigitar qualquer coisa, nao so letras.
Ja no formatterFactory eu coloquei o seguinte formato:

jFormattedTextField1.setFormatterFactory(new DefaultFormatterFactory(new MaskFormatter("****")));

pra deixar o cara digitar apenas 4 caracteres.
O problema é que esse * do MaskFormatter é tipo um caractere coringa, e quando eu digito ume letra no campo em minusculo ela não fica em maiusculo, ou seja ele ignora o comportamento do Document.
Tem como resolver isso?
Ou existe algum jeito mais facil de limitar o numero de caracteres do campo?

3 Respostas

sedmalakian

Se eu entendi, acho que é mais ou menos isso:

MaskFormatter MASK=new MaskFormatter("****");
MASK.setValidCharacters("ABCDEFGHIJKLMNOPQRSTUVWXYZ");			
JFormattedTextField field = new JFormattedTextField(MASK);  
field.setFocusLostBehavior(JFormattedTextField.COMMIT);
mateusviccari

opa valeu, acredito que dessa forma ele nao permite numeros e caracteres especiais nem espaços…
resolvi fazer tudo naquele UpperCaseDocument que tinha aqui e implementei uma funçãozinha que permitisse informar o numero de caracteres maximos, ficou supimpa!

sedmalakian

fmz, bom saber que te funcionou.
obs: o codigo anterior estava com um pequeno erro e eu ja arrumei.
na hora de copiar a minha classe de teste falhou. rsrs

Criado 27 de agosto de 2012
Ultima resposta 27 de ago. de 2012
Respostas 3
Participantes 2