Controlar Tab Order usando FocusTraversalPolicy na ordem em que sao adicionados no container

tem coisas no java que dao tanto trabalho … mas tudo bem … tem outras coisas que seriam dificeis em outras linguagens que em java é facil …
eu ja vi uns exemplos de uns FocusTraversalPolicy, mas nenhum que atendece minha necessidade
alguem ai tem algum exemplo de um FocusTraversalPolicy que siga o foco conforme os componentes foram adicionados no container ???

tipo …

edt1 edt4
edt2 edt5
edt3 edt6

o java pula do edt1 pro edt4 … sendo q eu keria q fosse pela ordem de adicionamento …
do 1 pro 2 … do 2 pro 3 … e assim por diante

http://forums.sun.com/thread.jspa?messageID=845006

intaum… eu vi isso ai … mas nenhum desse fez o q eu keria …
um deles ate fez … mas nao pulava pro proximo Panel … so ficava circulando entre os componentes do proprio panel

ai eu fiz esse aki e deu certo:

import java.awt.Component;
import java.awt.Container;
import java.awt.FocusTraversalPolicy;
import java.awt.Window;

public class AddOrderFocusTraversalPolicy extends FocusTraversalPolicy
{

    @Override
    public Component getComponentAfter(Container aContainer, Component aComponent)
    {
        int indexCmp = -1;

        for(int i = 0; i < aContainer.getComponentCount(); i++)
        {
            if (indexCmp == -1)
                if (aContainer.getComponent(i).equals(aComponent))
                    indexCmp = i;

            if (i + 1 < aContainer.getComponentCount())
                if (indexCmp != -1)
                    if (accept(aContainer.getComponent(i + 1)))
                        return aContainer.getComponent(i + 1);
        }

        return null;
    }

    @Override
    public Component getComponentBefore(Container aContainer, Component aComponent)
    {
        int indexCmp = -1;
        
        for(int i = aContainer.getComponentCount() -1; i > 0; i--)
        {

            if (indexCmp == -1)
                if (aContainer.getComponent(i).equals(aComponent))
                    indexCmp = i;
            
            if (i >= 0)
                if (indexCmp != -1)
                    if (accept(aContainer.getComponent(i - 1)))
                        return aContainer.getComponent(i - 1);
        }

        return null;
    }

    @Override
    public Component getFirstComponent(Container aContainer)
    {
        for(int i = 0; i < aContainer.getComponentCount(); i++)
            if (accept(aContainer.getComponent(i)))
                return aContainer.getComponent(i);

        return null;
    }

    @Override
    public Component getLastComponent(Container aContainer)
    {
        for(int i = aContainer.getComponentCount()-1; i >= 0; i--)
            if (accept(aContainer.getComponent(i)))
                return aContainer.getComponent(i);

        return null;
    }

    @Override
    public Component getDefaultComponent(Container aContainer)
    {
        return getFirstComponent(aContainer);
    }

    protected boolean accept(Component aComponent)
    {
        if (!(aComponent.isVisible() && aComponent.isDisplayable() &&
                aComponent.isFocusable() && aComponent.isEnabled()))
        {
            return false;
        }
        
        // Verify that the Component is recursively enabled. Disabling a
        // heavyweight Container disables its children, whereas disabling
        // a lightweight Container does not.
        if (!(aComponent instanceof Window))
        {
            for (Container enableTest = aComponent.getParent();
                    enableTest != null;
                    enableTest = enableTest.getParent())
            {
                if (!(enableTest.isEnabled() || enableTest.isLightweight()))
                {
                    return false;
                }
                if (enableTest instanceof Window)
                {
                    break;
                }
            }
        }

        return true;
    }
}

nao sei se essa seria a melhor codificacao, visto que ele faz um for que, em alguns casos, pode ficar meio lento … se alguem tiver uma solucao melhor …