| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/09/2006 16:04:46
|
EderBaum
JavaBaby
![[Avatar]](/images/avatar/b937384a573b94c4d7cc6004c496f919.jpg)
Membro desde: 27/07/2005 22:58:32
Mensagens: 92
Offline
|
tenho o seguinte código:
MaskFormatter mf = new MaskFormatter("UUUUU"); /*Permite digitar até 5 letras maiusculas*/
JFormattedTextField field = new JFormattedTextField(mf);
No caso a mascara permite digitar no máximo 5 letras em upercase.
Se eu der um tab e ir para o próximo campo e tiver digitado no "field1" algo como "EU" que tem apenas 2 letras, o campo fica vazio.
Meu objetivo é criar algo em que o cara possa digitar no máximo X letras e o que vier abaixo ele aceite mesmo assim.
Outra coisa é o comportamento estranho do JFormattedTextField em que com o mouse ou seta para direita eu posso ir digamos a posição 4 do campo sem digitar nada. queria evitar isso.
Alguém pode me ajudar?
|
sabesim.com.br |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/09/2006 17:03:00
|
EderBaum
JavaBaby
![[Avatar]](/images/avatar/b937384a573b94c4d7cc6004c496f919.jpg)
Membro desde: 27/07/2005 22:58:32
Mensagens: 92
Offline
|
O problema do TAB resolvi com isso:
field.setFocusLostBehavior(JFormattedTextField.PERSIST);
Só falta agora o comportamento estranho do JFormattedTextField em que com o mouse ou seta para direita eu posso ir digamos a posição 4 do campo sem digitar nada
Alguém ai?
|
sabesim.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/09/2006 19:16:35
|
Rodrigo Manhães
JavaGuru
![[Avatar]](/images/avatar/3e9f7c16bd1cdea78f8e2eea72dfdfbe.png)
Membro desde: 14/07/2005 17:07:07
Mensagens: 242
Localização: Campos dos Goytacazes/RJ
Offline
|
O uso de JFormattedTextField se justifica quando você realmente tem uma máscara para edição (por exemplo: datas, CEP ou CPF), o que realmente não é o seu caso.
Para o que você deseja, aconselho o uso de JTextField comum auxiliado por um InputVerifier. Por exemplo, para que o componente aceite no máximo 5 letras em caixa-alta, o código é extremamente simples:
Para ligar o verifier ao componente, faça
Um verifier serve para validar o conteúdo de um widget (retornando false caso a entrada seja inválida), mas pode-se através dele transformar o valor de um componente, como é feito aqui, truncando o conteúdo caso tenha mais de 5 caracteres e convertendo-o para maiúsculas. Note que a validação é feita quando da perda do foco, ou seja, o componente aceitará minúsculas e mais que cinco caracteres. Na perda do foco é que a conversão será executada.
PS: Não estou com o JSE neste computador, de modo que o código pode conter alguma eventual "irregularidade", mas a idéia é esta.
|
https://github.com/rodrigomanhaes
http://programacaoradical.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2006 09:56:32
|
EderBaum
JavaBaby
![[Avatar]](/images/avatar/b937384a573b94c4d7cc6004c496f919.jpg)
Membro desde: 27/07/2005 22:58:32
Mensagens: 92
Offline
|
Note que a validação é feita quando da perda do foco, ou seja, o componente aceitará minúsculas e mais que cinco caracteres. Na perda do foco é que a conversão será executada.
Este é o problema, eu queria algo mais "instantãneo"
|
sabesim.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2006 11:17:11
|
Rodrigo Manhães
JavaGuru
![[Avatar]](/images/avatar/3e9f7c16bd1cdea78f8e2eea72dfdfbe.png)
Membro desde: 14/07/2005 17:07:07
Mensagens: 242
Localização: Campos dos Goytacazes/RJ
Offline
|
Mas que diferença faz?
|
https://github.com/rodrigomanhaes
http://programacaoradical.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2006 11:27:25
|
EderBaum
JavaBaby
![[Avatar]](/images/avatar/b937384a573b94c4d7cc6004c496f919.jpg)
Membro desde: 27/07/2005 22:58:32
Mensagens: 92
Offline
|
A diferença é que:
Imagine que eu tenho um campo que vai código de barras.
- Um código de barras é numérico e tem 13 digitos
- Ai a anta do usuário digita uma palavra ou letras, ou coisa inválida que dê um certo trabalho
- Ele só vai descobrir que errou a coisarada toda depois que dêr TAB.
Deve existir algo, pois em linguagens como Dataflex(Super arcaico) tem isso
|
sabesim.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2006 11:46:11
|
EderBaum
JavaBaby
![[Avatar]](/images/avatar/b937384a573b94c4d7cc6004c496f919.jpg)
Membro desde: 27/07/2005 22:58:32
Mensagens: 92
Offline
|
Parece que DocumentFilter resolve meu problema.
vou dar uma estudad
|
sabesim.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/09/2006 12:03:21
|
EderBaum
JavaBaby
![[Avatar]](/images/avatar/b937384a573b94c4d7cc6004c496f919.jpg)
Membro desde: 27/07/2005 22:58:32
Mensagens: 92
Offline
|
FUNCOU!!!
Ufffa, é por isso que a persistência vale a pena;
Veja o result ai
Relativamente complexo, mas Perfeito
|
sabesim.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/09/2006 11:11:14
|
Rodrigo Manhães
JavaGuru
![[Avatar]](/images/avatar/3e9f7c16bd1cdea78f8e2eea72dfdfbe.png)
Membro desde: 14/07/2005 17:07:07
Mensagens: 242
Localização: Campos dos Goytacazes/RJ
Offline
|
Não conhecia o DocumentFilter, valeu a dica! Desenvolvemos um mini-framework Swing para uso interno, vou substituir os InputVerifier por DocumentFilter sempre que a função do primeiro for simplesmente filtrar e não validar. Muito bom mesmo!
|
https://github.com/rodrigomanhaes
http://programacaoradical.blogspot.com |
|
|
 |
|
|