Java - eventos

2 respostas
M

Amigos como faço para criar uma evento para jtextFilld? O que quero é seguinte quando o campo de texto tipo cpf, cnpj, data e cep for modificado seu valor, será usado uma
expressão regular para verificar se é é um numero e se for fará as devidas validações. Tipo assim o campo data recebeu algo a função verifica se é um numero e após receber 4 dígitos será acrescentado uma / mais 2 dígitos outra / e os dois ultimos dígitos.

Agradeço muito a quem puder me ajudar.

2 Respostas

Matheus_terra

Acho melhor você usar um JFormattedTextField, com ele você pode definir uma máscara, ai no caso vc define uma mascara para CPF e não precisa ficar fazendo essas verificações ai… E ele só deixa digitar números também!

M

Valeu amigo muito obrigado. Achei uma outro solução vou postá-la abaixo.
Crie uma class que extends PlainDocument

import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class ValidaCpf extends PlainDocument{

  
    	private int tamanho = 14;

        @Override
        public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {

            String texto = getText(0, getLength());
            for (int i = 0; i < str.length(); i++) {
                char c = str.charAt(i);
                if (!Character.isDigit(c)) {
                    return;
                }
            }

            if (texto.length() < tamanho) {
                super.remove(0, getLength());
                StringBuilder s = new StringBuilder(texto + str);

                if (s.length() == 3) {
                    s.insert(3, ".");
                } else if (s.length() == 7) {
                    s.insert(7, ".");
                }else if(s.length() == 11){
                    s.insert(11, "-");
                }

                super.insertString(0, s.toString(), a);
            }
        }
    }

e para ultiliza-la

txtCpf.setDocument(new ValidaCpf());
Criado 14 de outubro de 2013
Ultima resposta 15 de out. de 2013
Respostas 2
Participantes 2