Problema ao resetar formulário

Bom, primeiramente boa noite a todos! Entao, to começando a aprender agr e to tentando criar um programinha enquanto vou aprendendo

Criei um método pra limpar todos os campos quando algum n for preenchido, mas o problema é q quando limpa os campos ele não reseta, tipo continua aparecendo a mensagem (“Campos não preenchidos”) mesmo que todos os dados estejam preenchidos. O que posso fazer?

private void limparCampos() {
        txtNome.setText("");
        txtSobrenome.setText("");
        txtEmail.setText("");
        txtSenha.setText("");
        txtConfirmarSenha.setText("");
        txtCpf.setText("");
        txtCelular.setText("");
        jcDia.setSelectedItem("Dia");
        jcMes.setSelectedItem("Mês");
        jcAno.setSelectedItem("Ano");
        buttonGroup6.clearSelection();
    }

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:

        //verificando campos
        if (txtNome.getText().length() > 0) {
            lblCp1.setVisible(false);
        } else {
            lblCp1.setVisible(true);
        }
        if (txtEmail.getText().length() > 0) {
            lblCp2.setVisible(false);
        } else {
            lblCp2.setVisible(true);
        }
        if (txtSobrenome.getText().length() > 0) {
            lblCp3.setVisible(false);
        } else {
            lblCp3.setVisible(true);
        }
        if (txtSenha.getText().length() > 0) {
            lblCp4.setVisible(false);
        } else {
            lblCp4.setVisible(true);
        }
        if (txtConfirmarSenha.getText().length() > 0) {
            lblCp5.setVisible(false);
        } else {
            lblCp5.setVisible(true);
        }
        if ((jcDia.getSelectedItem().equals("Dia"))
                || (jcMes.getSelectedItem().equals("Mês"))
                || (jcAno.getSelectedItem().equals("Ano"))) {
            lblCp6.setVisible(true);
        } else {
            lblCp6.setVisible(false);
        }
        if ((jrMas.isSelected() == false) && (jrFem.isSelected() == false)) {
            lblCp7.setVisible(true);
        } else {
            lblCp7.setVisible(false);
        }

        if ((txtNome.getText().length() > 0)
                && (txtEmail.getText().length() > 0)
                && (txtSobrenome.getText().length() > 0)
                && (txtSenha.getText().length() > 0)
                && (txtConfirmarSenha.getText().length() > 0)
                && (jcDia.getSelectedItem() != ("Dia"))
                && (jcMes.getSelectedItem() != ("Mês"))
                && (jcAno.getSelectedItem() != ("Ano"))
                && (jrFem.isSelected() == true)
                && (jrMas.isSelected() == true)) {

            
            //pegando os dados dos campos
            nome = txtNome.getText();
            sobrenome = txtSobrenome.getText();
            celular = txtCelular.getText();
            email = txtEmail.getText();
            if (txtSenha.getText().equals(txtConfirmarSenha.getText())) {
                senha = txtSenha.getText();
            } else {
                JOptionPane.showMessageDialog(null, "As senhas não correspondem.");
            }
            cpf = txtCpf.getText();
            nascimento = (String) jcDia.getSelectedItem() + jcMes.getSelectedItem() + jcAno.getSelectedItem();
            if (jrMas.isSelected() == true) {
                sexo = jrMas.getText();
            } else {
                sexo = jrFem.getText();
            }
            JOptionPane.showMessageDialog(null, "Cadastro concluído.");
            this.dispose();
            
        } else {

            JOptionPane.showMessageDialog(null, "Campos não preenchidos.");
            limparCampos();
        }

Você só vai irritar o usuário, pois vai apagar todo o trabalho dele.
O ideal é fornecer a ele um botão que permita resetar o formulário quando ele quiser.

Os campos são apagados, o problema é que a validação dos campos sempre retorna falso, ou seja, você não consegue cadastrar nada.

A instrução (jrFem.isSelected() == true) && (jrMas.isSelected() == true) implica na necessidade de ter que marcar os radio buttons masculino e feminino ao mesmo tempo, o que não vai ser permitido pela variável buttonGroup6, nem aceitável do ponto de vista da corretude do programa.
Você tem que atualizar a estrutura de controle if, substituindo este trecho por:
(jrFem.isSelected() || jrMas.isSelected())
Observando que os parênteses são importantes para garantir a ordem de precedência, caso contrário vai mudar a lógica da operação.
Sugestão de refatoração da codificação nas condições atuais:

if (txtNome.getText().isEmpty()
                && !txtEmail.getText().isEmpty()
                && !txtSobrenome.getText().isEmpty()
                && !txtSenha.getText().isEmpty()
                && !txtConfirmarSenha.getText().isEmpty()
                && jcDia.getSelectedIndex() > 0
                && jcMes.getSelectedIndex() > 0
                && jcAno.getSelectedIndex() > 0
                && (jrFem.isSelected() || jrMas.isSelected())) {
                //restante da codificação

Obs.: sua codificação apresenta padrões de repetição, portanto, procure desenvolver métodos e faça uso o de estruturas de repetição.
Como você tem muitos jTextFields, poderia criar uma array para eles, usar um for e verificar um a um qual campo de texto não foi preenchido.
Outra coisa, só realize a atribuição de valores às variáveis depois de realizar todas as validações dos campos necessários, pois se um deles não for validado todo o processamento anterior será inútil.
A lógica empregada é normal para quem está no início do aprendizado, entretanto, você deve focar na manipulação de listas e arrays, pois haverá uma redução significativa na quantidade de linhas de código.
Té+

1 curtida

Entendi… vou refazer e organizar o meu código

E obrigado pelo feedback ^^