Foco nos componentes da tela

Olá,
Estou fazendo uma aplicação desktop com NetBeans e estou com dificuldade em trabalhar com o foco da tecla Tab, segue algumas coisas q tentei e n consegui:
*Colocar foco em label.

*Tem algumas janelas que estão abrindo sem foco em campo algum a n ser q eu clique com o mouse em cima de algum deles, porém eu quero navegar somente com o teclado.

Olá ligi,

É possível colocar o foco em uma JLabel sim. Para isso, você tem que chamar o método setFocusable(true). Eu criei um código de teste para isso, veja:

[code]final JLabel x = new JLabel(“x”);
x.setFocusable(true);
x.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent e) {
x.setForeground(Color.BLUE);
}

public void focusLost(FocusEvent e) {
x.setForeground(Color.BLACK);
}
});[/code]
Assim, quando a label possui o foco, o seu texto fica azul.

Para trazer o foco para qualquer outro componente, utilize o método requestFocus().

Grande abraço,
Hugo.

Oi Hugo funcionou bem o código q me passou, mais o meu segundo problema continua:
*Tem algumas janelas que estão abrindo sem foco em campo algum a n ser q eu clique com o mouse em cima de algum deles, porém eu quero navegar somente com o teclado.

Isso acontece mesmo eu colocando o método setFocusable(true) em todos os campos, n entendi pq isso aconteceu a 1ª tela funciona normalmente e as outras ficaram assim :?

Só pra lembrar, todo componente possui um método grabFocus() que puxa o foco para si. Pode ser útil… :slight_smile:

Oi ligi,

Foi por isso que eu mencionei:

“Para trazer o foco para qualquer outro componente, utilize o método requestFocus()”

Assim, quando você abrir uma janela, escolha o primeiro componente e chame o método requestFocus(). Não precisa chamar setFocusable(true) para os componentes de entrada de dados do Swing.

Grande abraço,
Hugo.

Obrigada Pessoal, funcionaou muito bem.
Usei o setFocusable(true) para colocar foco nos labels e o grabFocus() para colocar foco no componente desejado ao abrir uma tela.
[]'s