Como restringir caracter especial no jTextField?

4 respostas
tiago.bizzo

Caros amigos,
já pesquisei bastante aqui no forum e não encontrei nada referente a restrição de caracteres dentro de um jTextField. Será que posso contar com a ajuda de vocês para solucionar o meu problema?

A idéia é, em um jTextField conter somente letras (Maiúsculas e/ou minúsculas) e números.

Motivo:
tenho um programa da empresa, onde vários operadores utilizam inserindo informações no banco de dados MySQL e alguns estão inserindo o caracter contra-barra (""), com isso os campos sucessores estão ficando em branco ou são gravados em colunas erradas. Por isso pretendo cortar o mal pela raiz.

desde já, agradeço a atenção e ajuda de todos.

4 Respostas

Sombriks

http://java.sun.com/docs/books/tutorial/uiswing/components/formattedtextfield.html

tiago.bizzo

valeu camarada
já estou verificando.

abs,

Marck

Olá!

Acho que a melhor maneira de fazer isso é criando uma subclasse de PlainDocument.
No metodo insert voce pode tratar o que o campo pode aceitar como números ou jogar as letras para UpperCase.

public class UpperCaseDocument extends PlainDocument {
 
         public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
 
 	          if (str == null) {
 		      return;
 	          }
 	          char[] upper = str.toCharArray();
 	          for (int i = 0; i < upper.length; i++) {
 		      upper[i] = Character.toUpperCase(upper[i]);
 	          }
 	          super.insertString(offs, new String(upper), a);
 	      }
     }

No seu textField, voce passa Document com text.setDocument.

tiago.bizzo

Marck:
Olá!

Acho que a melhor maneira de fazer isso é criando uma subclasse de PlainDocument.
No metodo insert voce pode tratar o que o campo pode aceitar como números ou jogar as letras para UpperCase.

public class UpperCaseDocument extends PlainDocument {
 
         public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
 
 	          if (str == null) {
 		      return;
 	          }
 	          char[] upper = str.toCharArray();
 	          for (int i = 0; i < upper.length; i++) {
 		      upper[i] = Character.toUpperCase(upper[i]);
 	          }
 	          super.insertString(offs, new String(upper), a);
 	      }
     }

No seu textField, voce passa Document com text.setDocument.

Muito Obrigado pela ajuda…
vou tentar inserir ao programa!

valeu mesmo!!!

abs,

Criado 27 de fevereiro de 2009
Ultima resposta 27 de fev. de 2009
Respostas 4
Participantes 3