JTextField

8 respostas
J

No momento preciso tirar duas dúvidas, para poder finalizar o meu aplicativo, como eu faço para limitar o número de caracteres digitados no JTextField? Ex: CPF apenas 14 caracteres.

E a segunda dúvida é sobre como criar uma máscara para o JTextField, para campos como data ou CPF.

No momento agradeço antecipadamente toda ajuda que me for prestada.

Juvenilson Santos :o [/b]

8 Respostas

J

olha, eu nunca testei até porque sou iniciante, mas tenta
o metodo
.setSize()

J

eu tava olhando uns codigos aqui
e vc poderia tentar a sintaxe:

nomeTextField=new JTextField()
obs : dentro do parantese vc pôe o tamanho da sua caixa de texto

vê se resolve
qualquer coisa desculpa…
falow

Gilmar_Rodrigues

Para isso vc deve usar javax.swing.JFormattedTextField e não o JTextField. Tem um exemplo muito bom na API.
Veja em http://java.sun.com/j2se/1.4.1/docs/api/javax/swing/JFormattedTextField.html

[]'s

G

Gilmar,
Eu também estou com a mesma dúvida do Juvenilson. Você sabe como utilizar este objeto JFORMATTEDTEXTFIELD? Pois eu tentei e não entendi.
Você pode me ajudar?

Gustavo

“Gilmar Rodrigues”:
Para isso vc deve usar javax.swing.JFormattedTextField e não o JTextField. Tem um exemplo muito bom na API.
Veja em http://java.sun.com/j2se/1.4.1/docs/api/javax/swing/JFormattedTextField.html

[]'s

M

Limitação do JTextField …

Tenho a idéia de que possa usar o KeyListener e o método getKeyChar() para retornar o número de caracteres pressionados e guardar numa variável e ao exceder o número de caracteres, ocorrer um consumo do método ( consume() ) . Mas tente procurar um métodos que faça isso pra você ( a melhor saída ) ou utilizar esse algoritmo que consumirá mais da sua memória( tamanho de arquivo ) e estará “reinventando a roda” porque imagino que exista esse método que possa limitar o JTextField ? Eu também postei uma tópico sobre isso junto com uma dúvida de JFrame !!!

Falow …

Marcel …

Gilmar_Rodrigues

Bom, na verdade eu nunca usei o JformattedTextField. Só falei dele pq quando programei em delphi eu usava um mask pra fazer exatamente isso que vc quer. Então procurei na documentação e achei essa classe.
Não tive muito tempo de olhar direito. Só fiz um teste para que um campo só aceitasse um valor que fosse uma data. Exatamente como na API.
Vou dar uma olhada com mais calma depois e coloco aqui o que eu descobrir.

[]'s

Gilmar_Rodrigues

Tá legal. fiquei muito curioso e fui ver como isso funciona :slight_smile:
Seguinte:
Use o JFormattedTextfield ao invés do JTextField, assim:

JFormattedTextField ftf = new JFormattedTextField();

Então vc vai precisar definir uma máscara.

MaskFormatter mf = new MaskFormatter("####-####");

Se quiser, pode definir quais caracteres são válidos ou quais são inválidos. Dê uma olhada na API!!!

mf.setValidCharacters("123");

Use um caracter para deixar mais explicito quantos caracteres devem ser preenchidos.

mf.setPlaceholderCharacter('_');

Para finalizar, link a máscara com o campo de texto.

mf.install(ftf);

Não se esqueça de capturar a exceção.
Aqui vai o código todo junto

JFormattedTextField ftf = new JFormattedTextField();
        try {
            MaskFormatter mf = new MaskFormatter("####-####");
            mf.setValidCharacters("123");
            mf.setPlaceholderCharacter('_');
            mf.install(ftf);
        }
        catch (ParseException pe) {}

Pronto. bem simples né?!?! :smiley:
Aqui tem os caracteres que vc pode usar para criar a máscara.
No exemplo acima eu usei # que representa dígitos(números)

Any valid number, uses Character.isDigit.

’ Escape character, used to escape any of the special formatting characters.
U Any character (Character.isLetter). All lowercase letters are mapped to upper case.
L Any character (Character.isLetter). All upper case letters are mapped to lower case.
A Any character or number (Character.isLetter or Character.isDigit)
? Any character (Character.isLetter).

  • Anything.
    H Any hex character (0-9, a-f or A-F).

[]'s

B

Gilmar valeu pela dica!!!MaskFormatter é uma boa alternativa mesmo!!

Criado 22 de outubro de 2002
Ultima resposta 3 de nov. de 2007
Respostas 8
Participantes 6