Как использовать FocusTraversalPolicy с MigLayout?

У меня есть JPanel с компонентами, добавленными с абсолютными местоположениями (например, «pos x y»), и макет фактически представляет собой два столбца текстовых полей. Чего я хотел бы добиться, так это того, чтобы Tab сместила фокус на следующий компонент по вертикали, чтобы пройти по первому столбцу, а затем по второму. На данный момент он делает это горизонтально. Я пытался расширить FocusTraversalPolicy, но что меня раздражало, так это то, что вы должны добавить его к JFrame, а не только к самой панели - разве это неправильно?

Как я могу этого добиться? Спасибо.


person rtheunissen    schedule 14.05.2012    source источник


Ответы (1)


Насколько я знаю, цикл обхода фокуса по умолчанию — это естественный порядок дочерних компонентов в контейнере, то есть порядок, в котором они были добавлены в контейнер. Я не очень хорошо знаю MigLayout, но если вам удастся добавить компоненты вертикально, может последовать обход фокуса.

Вы можете установить FocusTraversalPolicy для любого контейнера, однако Swing будет использовать его только при вызове setFocusTraversalPolicyProvider(true) в том же контейнере.

person Roland Schneider    schedule 14.05.2012
comment
MigLayout, похоже, определяет порядок на основе положения компонентов, возможно, потому, что я добавил их с абсолютными значениями. Вторая часть вашего ответа была именно тем, что я искал. Спасибо. :) - person rtheunissen; 14.05.2012