AWT (или Swing) FocusManager использует FocusTraversalPolicy, чтобы определить, какой компонент получает фокус следующим.
Я думаю, что FocusTraversalPolicy по умолчанию зависит от внешнего вида, но там, где я наблюдал, это было либоContainerOrderFocusTraversalPolicy (который просто сортирует компоненты по индексу в родительском элементе) или LayoutFocusTraversalPolicy.
Этот последний упомянутый класс выполняет некоторое упорядочение компонентов контейнера по их расположению, грубо помещая их в строки и пересекая ихпострочно, и в строках слева направо (или справа налево в локалях RTL).Это лучше всего работает при использовании менеджера компоновки на основе сетки, такого как GridLayout, GridBagLayout, GroupLayout и т. Д.