Evento FocusLost em JtextField

Boa tarde pessoal, estou com um problema com o método FocusLost do meu JTextField, no meu caso estou validando o campo para saber se ele está vazio, mas ele me retorna várias mensagens de campo vazio, e não consegui enxergar o q estou fazendo de errado, o código que estou usando é este:

 private void txtcodigoFocusLost(java.awt.event.FocusEvent evt) {                                    
        //Validação do campo
         if(txtcodigo.getText().equals("")){
            JOptionPane.showMessageDialog(null,"O campo código deve ser preenchido!");
            txtcodigo.requestFocus();
         }
  }     

eu estava validando desta maneira:

private void txtcodigoFocusLost(java.awt.event.FocusEvent evt) {                                    
        //Validação do campo
         if(txtcodigo.getText().equals("")){
            JOptionPane.showMessageDialog(null,"O campo código deve ser preenchido!");
         }
}                                   

private void txtsolFocusGained(java.awt.event.FocusEvent evt) {                                   
        //Validação do campo anterior
        if(txtcodigo.getText().equals(""))
            txtcodigo.requestFocus();
}          

mas também começou a ocorrer problemas pq ao enviar o foco para o anterior ele informava este erro em tempo de execussão:

Exception occurred during event dispatching:
java.lang.NumberFormatException: For input string: “”

pois ao retornar o foco ele enviava uma String vazia para a conversão.
Gostaria de saber como validar um campo corretamente, pois é a primeira vez que tento validar um campo. Obrigado.

Minha sugestão é validar os campos obrigatórios antes de salvar/pesquisar, assim você evita essa dor de cabeça, já passei por isso tb!