Ordem da tecla TAB

Bom dia.

Já visitei vários fóruns e tópicos sobre a ordem da tecla TAB (inclusive aqui no GUJ), porém ainda não consegui resolver o meu problema.

Em alguns destes fóruns o pessoal falou que a ordem da tabulação é referente a ordem em que você adiciona o componente no layout.
Fiz isto na minha aplicação, adicionando os componentes na ordem em que eu queria a minha tabulação e não funcionou.

Há outros que utilizam o método @deprecated setNextFocusableComponent() e dizem que funciona.

O fato é que nenhuma destas sugestões funcionou na minha aplicação.

Obs.: Tenho um método que faz esta ordem funcionar, onde você passa o componente com foco e o componente que receberá o foco. Mas isto se torna repetitivo, porque em toda classe que eu preciso manipular a ordem da tabulação, tenho que utilizar estes métodos.
Acredito que tenha algo mais simples de se fazer para resolver isto.

Há algo que ainda não foi dito que possa solucionar este problema?

Agradeço desde já.
Abraço!

da uma lida nesse tutorial, que explica como funciona o sistema de foco no java.

http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html

flw’s

[]'s

duduribeiro

Seguinte: a manipulação dos TAB’s é default.
Por exemplo: Tenho uma tela onde há 5 JTextField’s, abaixo 1 JTable e abaixo 1 JButton, ficando mais ou menos assim:

JTextField1 | JTextField2
JTextField3 | JTextField4
JTextField5

JTable

JButton

Utilizando o TAB, Ctrl + TAB e Crtl + Shift + TAB, consigo navegar corretamente pela minha tela, conseguindo foco em todos os componentes. Este não é o problema.

O problema é: na minha tela, quero que o quando o JTextField3 estiver com foco, ao pressionar a tecla TAB, ele vá para o JTextField5 e não para o JTextField4 que é o padrão (default).

Espero ter sido claro.

Abraço!

entendi,
é que nesse link que te mandei é mais geral.
nesse fala tudo sobre o foco pelo keybord (TAB / SHIFT-TAB)
http://download.oracle.com/javase/7/docs/api/java/awt/doc-files/FocusSpec.html

da uma olhada.
principalmente nesse trecho
[b]
Programmatic Traversal

In addition to user-initiated focus traversal, client code can initiate a focus traversal operation programmatically. To client code, programmatic traversals are indistinguishable from user-initiated traversals. The preferred way to initiate a programmatic traversal is to use one of the following methods on KeyboardFocusManager:

KeyboardFocusManager.focusNextComponent() KeyboardFocusManager.focusPreviousComponent() KeyboardFocusManager.upFocusCycle() KeyboardFocusManager.downFocusCycle()

Each of these methods initiates the traversal operation with the current focus owner. If there is currently no focus owner, then no traversal operation occurs. In addition, if the focus owner is not a focus cycle root, then downFocusCycle() performs no traversal operation.

KeyboardFocusManager also supports the following variants of these methods:

* KeyboardFocusManager.focusNextComponent(Component)
* KeyboardFocusManager.focusPreviousComponent(Component)
* KeyboardFocusManager.upFocusCycle(Component)
* KeyboardFocusManager.downFocusCycle(Container)

[/b]

quando chegar em casa tento montar um exemplo para ti.

[]'s

Valeu a força.
Vou ler este tutorial e ver no que dá.
Abraço!

procura saber como utilizar a classe abstrada FocusTraversalPolicy

olha o exemplo
http://www.java2s.com/Tutorial/Java/0260__Swing-Event/UseFocusTraversalPolicy.htm

mais especifico a classe MyOwnFocusTraversalPolicy


no netbeans utilizando o FocusTraversalPolicy, da pra voce ‘ordernar’ de acordo como os componentes esta ordenado na janela Inspector, dai caso queira customizar seria só modificar a ordem da lista ‘Vector order’ da classe MyOwnFocusTraversalPolicy (claro que da pra melhorar, utilizando mapa e etc)

abraço

Perfeito o exemplo lucasirc.
Vou analisar o código e implementá-lo na minha aplicação.
Abraço!