Validação dos campos em Swing

Eai galera! Eu fiz um formulário simples usando swing (não sei nada de nada sobre swing) e tive que validar os campos. Até ai está Ok! O problema é quando vou exibir a mensagem de ‘Cliente Cadastrado’, não sei onde coloca-la! Pois eu fiz toda a validação dentro do botão ‘Cadastrar’ de cada campo (Nome, CPF, E-mail e CEP) e quando um dos campos da erro ele vai mostrar para o cliente que o campo é obrigatório e não deveria aparecer a mensagem ‘Cliente Cadastro’ MAS! Para exibir a mensagem de cadastrado, coloquei ela dentro da “validação do CEP” que é a ultima validação, ou seja, se eu preencher o campo CEP corretamente e mensagem de ‘Cliente Cadastrado’ vai ser exibida mesmo os outros campos estando inválidos e a mensagem de invalido ter sido exibida. Pessoal essa é a primeira vez que posto uma duvida em relação a código e que faço o upload dele (do projeto no caso) por favor me desculpem algum erro. :slight_smile:
Obs: Fiz o upload o projeto aqui | O campo Celular está com o código comentado, resolvi diminuir o tamanho do formulário.

        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    /*---------------------------------Verificando se o campo 'Nome' está preenchido-------------------------------*/
    
    if (JTFNome.getText().isEmpty()) {
        JLObrigatorioNome.setVisible(true);
    }
    
    /*----------------------------------Verificando se o CPF é valido---------------------------------------------*/
    String cpf = JFTCPF.getText();//Passando o CPF com mascara para a String

    CPF pf = new CPF(cpf, true);//Instanciando um objeto da minha classe CPF

    try {//Tratando possiveis erros

        if (pf.isCPF()) {//Passando o com mascara para o meu método e verificar os digitos para validar ou não o CPF, na classe também sera retirada a mascara do CPF.
            JFTCPF.setText(pf.getCPF(false));
        }  {
            JLObrigatorioCPF.setVisible(true);
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(this, "Erro ao validar CPF");
    }

                   // Validando email
            if ((JTFEmail.getText().contains("@"))
                 && (JTFEmail.getText().contains("."))
                 && (!JTFEmail.getText().contains(" "))) {

        String usuario = new String(JTFEmail.getText().substring(0,
                JTFEmail.getText().lastIndexOf('@')));

        String dominio = new String(JTFEmail.getText().substring(JTFEmail.getText().lastIndexOf('@') + 1, JTFEmail.getText().length()));

        if ((usuario.length() >= 1) && (!usuario.contains("@"))
                && (dominio.contains(".")) && (!dominio.contains("@")) && (dominio.indexOf(".")
                >= 1) && (dominio.lastIndexOf(".") < dominio.length() - 1)) {

            JLObrigatorioEmail.setVisible(false);

        } else {
            JLObrigatorioEmail.setVisible(true);
        }

    } else {
        JLObrigatorioEmail.setVisible(true);
    }
    /*---------------------------------------Verificando se o campo CEP não está vazio (não estamos validando pois é necessário uma base de dados de ceps)------------------------------------------------*/
    String cep = JFTCEP.getText();
    //considerando que a máscara é #####-###, usamos o replace em "-"
    cep = cep.replace("-", "");
    if (cep.trim().length() == 0) {
        JLObrigatorioCEP.setVisible(true);
    } else {
        JOptionPane.showMessageDialog(this, "Cliente Cadastrado!");
    }

Não seria melhor aprender Swing então?

O arquivo RAR que você postou está corrompido.

Posta o código aqui no fórum mesmo, utilizando o botão de texto pré-formatado, indicado pelo botão "</>".

Mas é isso que estou tentando @staroski, aprender Swing e outras coisas, não estou com erro no código mas sim em como exibo para a pessoa, quero exibir “Cliente cadastrado” apenas quando todos os campos estiverem corretos, mas assim ele só vai exibir quando o campo CEP estiver correto, e não sei como resolver isso. Agradeço o aviso sobre o RAR e pela dica e eventuais ajudas, dicas e criticas (construtivas ou não rs).

Eu fiz um exemplo aqui com uns comentários. Veja se pode te ajudar. Mais uma coisa, não recomendo usar o ActionEvent para eventos, recomendo usar o ActionListener:

public class VerificarInformacoes extends JFrame {

JTextField nome;
JPasswordField senha;
JPasswordField confirmarSenhar;

public VerificarInformacoes() {
	super("Verificar informações");
	
	Container c = getContentPane();
	c.setLayout(new GridLayout(4, 2));
	
	c.add(new JLabel("Nome:"));
	nome = new JTextField();
	c.add(nome);
	
	c.add(new JLabel("Senha:"));
	senha = new JPasswordField();
	c.add(senha);
	
	c.add(new JLabel("Confirmar senha:"));
	confirmarSenhar = new JPasswordField();
	c.add(confirmarSenhar);
	
	JButton limpar = new JButton("Limpar");
	limpar.addActionListener(new BotaoLimparEvento());
	c.add(limpar);
	
	JButton cadastrar = new JButton("Cadastrar");
	cadastrar.addActionListener(new BotaoCadastrarEvento()); //adicionado evento no botão
	c.add(cadastrar);
	
	setResizable(false);
	setSize(300, 300);
	setLocationRelativeTo(null);;
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setVisible(true);
}

class BotaoCadastrarEvento implements ActionListener { //criando classe de evento de botão
	@Override
	public void actionPerformed(ActionEvent e) {
		if (new String(senha.getPassword()).equals("")  //verificando se o campo de senha está preenchido
				|| new String(confirmarSenhar.getPassword()).equals("") //verificando se o campo de confirmar senha está preenchido
				|| nome.getText().equals("")) //verificando se o campo de nome está preenchido
			
			//informando que há campos vazios
			JOptionPane.showMessageDialog(null, "Os campos estão vazios. Preencha todos por favor.");
		
		else { //caso todos os campos estejam preenchidos
			if (new String(confirmarSenhar.getPassword()).equals(new String(senha.getPassword()))) { //confirmando se as senhas são iguais
				//código para realizar o cadastro
				JOptionPane.showMessageDialog(null, "Cadastrado com sucesso."); //informado o cadastro
			} else
				JOptionPane.showMessageDialog(null, "As senhas são diferentes"); //informado que as senhas são diferentes
		}
	}
}

class BotaoLimparEvento implements ActionListener {
	@Override
	public void actionPerformed(ActionEvent e) {
		senha.setText("");
		confirmarSenhar.setText("");
		nome.setText("");
	}
}

public static void main(String[] args) {
	new VerificarInformacoes();
}

}

Upei no pastebin pois aqui o código fica feio:
https://pastebin.com/8cFifNzt

OBS: Não se esqueça das importações, não coloquei elas no código upado.

1 curtida

Obrigado @Guilherme9401, peguei o seu código dei uma analisada e ajustei o meu, deu certo. Muito obrigado pela ajuda e a recomendação.

Não foi nada. Lembrando que o ActionListener é para o evento do botão. Eventos para outros componentes do swing são outros eventos.