Outro detalhe é que tem muita repetição no seu código. Você poderia pegar as partes que se repetem e refatorar para um método, como por exemplo:
private void erro(String mensagem, JComponent campo, Color cor, boolean limparCampos) {
MudaCor();
campo.setBackground(cor);
JOptionPane.showMessageDialog(null, mensagem, "Atenção!", JOptionPane.WARNING_MESSAGE);
if (limparCampos) {
txtSenha.setText("");
txtConfirmarSenha.setText("");
}
campo.requestFocus();
}
Aí na validação você só chama este método mudando os parâmetros para cada caso:
public boolean ValidaCampos() {
if (txtData == null || txtData.getText().trim().equals("") || txtData.getText().equals(" / / ")) {
erro("Digite Uma Data Valida", txtData, Color.PINK, false);
return true;
} else if (txtNomeUsuario.getText().equals("")) {
erro("Digite um Nome de Usuário!", txtNomeUsuario, Color.PINK, false);
return true;
} else if (txtLogin.getText().equals("")) {
erro("Digite um Login!", txtLogin, Color.PINK, false);
return true;
} else if (txtEmail.getText().equals("")) {
erro("Digite um E-mail Válido!", txtEmail, Color.PINK, false);
return true;
} else if (jComboBoxPerfil.getSelectedItem() == null || jComboBoxPerfil.getSelectedIndex() == -1) {
erro("Selecione um Pefil de Usuário!", jComboBoxPerfil, Color.PINK, false);
return true;
} else if (txtSenha.getText().equals("")) {
erro("Digite uma Senha!", txtSenha, Color.PINK, false);
return true;
} else if (txtConfirmarSenha.getText().equals("")) {
erro("Digite a Confirmação da Senha!", txtConfirmarSenha, Color.PINK, false);
return true;
} else if (txtLembrete.getText().equals("")) {
erro("Digite um lembrete Para Senha!", txtLembrete, Color.PINK, false);
return true;
} else if (txtSenha.getText().length() < 8 || txtConfirmarSenha.getText().length() < 8) {
erro("Sua senha deve conter no mínimo 8 caracteres", txtSenha, Color.PINK, true);
return true;
} else if (!txtSenha.getText().equals(txtConfirmarSenha.getText())) {
erro("Suas senhas não são iguais", txtSenha, Color.PINK, true);
return true;
}
return false;
}