Verificação de campo após campo

Bom dia pessoal, estou com uma dúvida referente a verificação de campos, tenho esses dois métodos em uma classe onde outras classes fazem herança:

public boolean validarObrigatorios() {
        String mensagem = "";
        for (int i = 0; i < campos.size(); i++) {
            if (campos.get(i).eObrigatorio() && campos.get(i).eVazio())
                mensagem = mensagem + campos.get(i).getDica() + "  ";
        }
        if (mensagem.length() > 0) {
            jlLegenda.setText("O(s) seguinte(s) campo(s) são obrigatórios e não foram preenchidos: " + mensagem);
            return false;
        } else {
            return true;
        }
    }

    public boolean validarCampos() {
        String mensagem = "";
        for (int i = 0; i < campos.size(); i++) {
            if (!campos.get(i).eValido())
                mensagem = mensagem + campos.get(i).getDica() + "  ";
       }
       if (mensagem.length() > 0) {
            jlLegenda.setText("O(s) seguinte(s) campo(s) apresenta(m) informações inválidas: " + mensagem);
            return false;
       } else {
            return true;
       }
    }

e esses métodos em uma classe JTextField para que comporte de tal forma:

public boolean eObrigatorio() {
        return obrigatorio;
    }

   public boolean eValido() {
        return true;
    }

    public boolean eVazio() {
        if (getText().trim().length() > 0)
            return false;
        else
            return true;
    }

    public String getDica() {
        return dica;
    }

Até aqui tudo certo, a dúvida é a seguinte, como eu devo fazer para fazer essas verificações assim que passo para o próximo campo, eu já adicionei um FocusListener e no método FocusLost adicionei alguns desses métodos mas ao mudar para o próximo campo o sistema não faz a verificação.

Esses métodos estão pragramados para fazer as verificações assim que é precionado o botão confirmar de uma janela, mas eu acho interessante fazer a verificação campo a campo, alguém sabe me dizer onde eu estou errando, ou algo que deva ser implementado quando utilizado o FocusLost?

Obrigado