Lógica com Avancar e Recuar ((Resolvido))

Pessoal, tenho por exemplo 5 jTextfield, no qual o usuario determina qual campo deve ser ativo ou não.

Vamos supor que o jTextfield 2 e jTextfield 4 não deve ser preenchidos, sendo assim os proximos jTextfield recebendo o foco,

Para Avançar:
quando recebe o jTextfield2 recebe o foco ele verifica que este campo não está editable fazendo assim um jTextfield3.requestFocus() e o mesmo ocorre com o jTextfield4.

até ai tudo blz. o problema é o seguinte

E para recuar?
como eu conseguiria fazer para quando eu apertasse a tecla de recuar do jTextfield3 para o jTextfield2, o mesmo verificasse se o jTextfield2 está ativo e vendo que não está, ele solicitasse o focus para o jTextfield1 ?

alguém pode me dar uma luz nisso? pois vou trabalhar com mais de 10 campos e não estou conseguindo desenvolver essa lógica

Obrigado desde já! qualquer ajuda é bem vinda!

segue forma que consegui fazer:

[code]/*

  • To change this license header, choose License Headers in Project Properties.
  • To change this template file, choose Tools | Templates
  • and open the template in the editor.
    */
    package javaapplication2;

import java.util.ArrayList;
import javax.swing.JComponent;
import javax.swing.JTextField;

/**
*

  • @author Rodrigo-PC
    */
    public class AvancarRecuar {

    ArrayList listaComp = new ArrayList();

    public ArrayList getListaComp() {
    return listaComp;
    }

    public void setListaComp(ArrayList listaComp) {
    this.listaComp = listaComp;
    }

    public void Avancar(JComponent componente) {
    int posicao = listaComp.indexOf(componente);
    for (int i = posicao + 1; i < listaComp.size(); i++) {
    if (listaComp.get(i).isEnabled()) {
    if (listaComp.get(i) instanceof JTextField) {
    if (((JTextField) listaComp.get(i)).isEditable()) {
    listaComp.get(i).requestFocusInWindow();
    break;
    }
    }
    }
    }
    }

    public void Recuar(JComponent componente) {
    int posicao = listaComp.indexOf(componente);
    for (int i = posicao - 1; i >= 0; i–) {
    System.out.println(i);
    if (listaComp.get(i).isEnabled()) {
    if (listaComp.get(i) instanceof JTextField) {
    if (((JTextField) listaComp.get(i)).isEditable()) {
    listaComp.get(i).requestFocusInWindow();
    break;
    }
    }
    }
    }
    }

}
[/code]

Abraços a todos