7
respostas

Java _Validar componentes JTextField, JFormattedTextField na parte numérica para Cep e CPF com máscara ?

public class ViewClienteTeste extends JFrame implements ActionListener { private JLabel lblId; private JLabel lblNome; private JLabel lblLogradouro; private JLabel lblNumero; private JLabel lblComplemento; private JLabel lblCep; private JLabel lblCpf; private JTextField txtId; private JTextField txtNome; private JTextField txtLogradouro; private JTextField txtNumero; private JTextField txtComplemento; private JTextField txtCep; private JTextField txtCpf; private JButton btnOk; private JButton btnAlterar; private JButton btnExcluir; private JButton btnLocalizar; private JPanel painelBotoes; private JPanel painelFormulario;

public ViewClienteTeste() {
    super("Clientes");
    setLayout(new BorderLayout());

    painelFormulario = new JPanel();
    painelFormulario.setLayout(new GridLayout(7, 2));

    lblId = new JLabel("Id: ");
    painelFormulario.add(lblId);
    txtId = new JTextField(10);
    painelFormulario.add(txtId);

    lblNome = new JLabel("Nome: ");
    painelFormulario.add(lblNome);
    txtNome = new JTextField(10);
    painelFormulario.add(txtNome);

    lblLogradouro = new JLabel("Rua: ");
    painelFormulario.add(lblLogradouro);
    txtLogradouro = new JTextField(10);
    painelFormulario.add(txtLogradouro);

    lblNumero = new JLabel("N: ");
    painelFormulario.add(lblNumero);
    txtNumero = new JTextField(10);
    painelFormulario.add(txtNumero);

    lblComplemento = new JLabel("Complemento: ");
    painelFormulario.add(lblComplemento);
    txtComplemento = new JTextField(10);
    painelFormulario.add(txtComplemento);


    // MaskFormatter mascaraId = null;
    // MaskFormatter mascaraN = null;
    MaskFormatter mascaraCep = null;
    MaskFormatter mascaraCpf = null;

    try {
        mascaraCep = new MaskFormatter("#####-###");
        mascaraCpf = new MaskFormatter("#########-##");
        mascaraCep.setPlaceholderCharacter('_');
        mascaraCpf.setPlaceholderCharacter('_');

    } catch (ParseException excp) {
        System.err.println("Erro na formatação: " + excp.getMessage());
        System.exit(-1);
    }

    lblCep = new JLabel("CEP: ");
    painelFormulario.add(lblCep);
    txtCep = new JTextField(10);
    // painelFormulario.add(txtCep);
    JFormattedTextField jFormattedTextCep = new JFormattedTextField(mascaraCep);
    painelFormulario.add(jFormattedTextCep);

    lblCpf = new JLabel("CPF: ");
    painelFormulario.add(lblCpf);
    txtCpf = new JTextField(10);
    // painelFormulario.add(txtCpf);
    JFormattedTextField jFormattedTextCpf = new JFormattedTextField(mascaraCpf);
    painelFormulario.add(jFormattedTextCpf);

    // Aqui vou criar o painel e colocar os botões nele
    painelBotoes = new JPanel();
    painelBotoes.setLayout(new FlowLayout());

// painelBotoes = new JPanel(); // painelBotoes.add(btnOk); // btnOk.addActionListener(this);

    btnOk = new JButton("Cadastrar");
    painelBotoes.add(btnOk);
    btnOk.addActionListener(this);

    btnAlterar = new JButton("Alterar");
    painelBotoes.add(btnAlterar);

    btnLocalizar = new JButton("Localizar");
    painelBotoes.add(btnLocalizar);

    btnExcluir = new JButton("Remove");
    painelBotoes.add(btnExcluir);

    // Agora, vou incluir os dois paineis dentro da janela
    add(painelFormulario, BorderLayout.CENTER);
    add(painelBotoes, BorderLayout.SOUTH);
}

public void actionPerformed(ActionEvent event) {
    if ((txtId.getText().trim().length() > 0) // trim() == Tirando espaços em branco 
            && (txtNome.getText().trim().length() > 0) 
            && (txtLogradouro.getText().trim().length() > 0)
            && (txtNumero.getText().trim().length() > 0) 
            && (txtComplemento.getText().trim().length() > 0)

            && (txtCep.getText().trim().length() > 0 ) 
            && (txtCpf.getText().trim().length() > 0)
            && ( event.getSource()== btnOk ) ) {
        JOptionPane.showMessageDialog(null, "Cliente Cadastrado!");
    } else {
        JOptionPane.showMessageDialog(null, "Preencha todos os campos!", "Atenção",JOptionPane.ERROR_MESSAGE);

// JOptionPane.showMessageDialog(null, "Confira os campos Obrigatórios!!"); } }

public static void main(String[] args) {
    ViewClienteTeste janelinha = new ViewClienteTeste();// criando a janela
    janelinha.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    janelinha.setSize(400, 250);
    janelinha.setVisible(true);
}

} // To tendo problema para validar parte Numérica Cep e CPF. // _Por Favor Alguém saber. Como validar componentes JTextField e JFormattedTextField com Máscara Sem usa JavaFX e WindowBuilder ???

7 respostas

Opa, não temos nada de swing por aqui, mas nesse caso acho que posso ajudar. Você precisa extrair o texto e, se puder, tirar os caracteres da mascara.. pegue só a string com os identificadores do cpf/cnpj e aí use qualquer validador já pronto para isso.

Olá prof Alberto Souza Obrigado pela Boa ideia. Mas eu não tô conseguindo fazer isso. Por favor poderia mostra jeito certo.

// Eu já tentei isso: //equals(" ") //equals("-") //equals(" - ") //equals(" - ") //equals(" - ") //8espaço. *// *equals("-") //equals("____-___") // Não vai // Muito estranho

OPa, aqui eu não consigo ajudar muito mais, infelizmente... Aplicações desktop não é algo comum nos dias de hoje e eu realmente não mexo. Ainda acho que o jeito mais fácil é você pegar um código que valida cpf, já pronto no mercado, talvez você ache no projeto chamado Stela... pega o valor textfield e passa para o validador.

Thalles,

Dê uma olhada se ajuda: https://www.devmedia.com.br/validando-informacoes-de-campos-jtextfield/26336

Vai te dar uma ideia de "como começar a validação" dos campos.

Para a lógica da validação em si, posso recomendar este arquivo: https://dicasdeprogramacao.com.br/algoritmo-para-validar-cpf/

Desta forma, você vai entender o cálculo e ter a chance de codificar seu próprio validador. O que vai lhe dar muito mais resultado no aprendizado do que utilizar um validador pronto.

_prof Alberto Souza, valeu pelo dica. Tô pesquisando

Marcus Viníciu, obrigado pela atenção. Mas eu já tinha visto esse link ainda mais do devmedia.com.br foi de onde tirei boa parte do código. _O problema validar número é quando chegar si no bloco, // actionPerformed(ActionEvent event) { // Não consegui ainda validar Cep e Cpf tanto que já usei .length() , equals() e isEmpty() // _Talvez é alguma coisa q to fazendo errado ainda não descobri.