requestFocus() Não funciona

4 respostas
EderBaum

Olá

Tenho o seguinte código:

public class TopPanel extends JPanel {
      public TopPanel(Main main) {
		super();		
		printButton();
	}
}
JPanel p = new JPanel();
JButton b = new JButton("Cadastrar");		
JButton c = new JButton("Cancelar");
p.add(c);
p.add(b);
add(p);

b.requestFocus();

Mas a desgraça insiste em focar no botão c (Cancelar).
Já tentei de tudo, e não rola.

O que pode estar dando errado?

4 Respostas

fabiozoroastro

Realmente, trabalhar esses detalhes com swing é uma d*** na minha opinião.
Se não me engano, você vai precisar fazer algo mais ou menos assim para conseguir setar o foco:

final JButton b = new JButton("Cadastrar"); // Nao esqueça de colocar o b com o modificador final
JButton c = new JButton("Cancelar");  
SwingUtilities.invokeLater(new Runnable() {
   public void run() {
      b.requestFocus();
   }

Testa aí.

EderBaum

Já havia testado isso e também não rola. Argggggggggg

R

Use requestFocusInWindow() em vez de requestFocus().

EderBaum

Creio que descobri o que fazer

Este Jpanel ai é criado para ser colocado em um JFrame.
Para requestFocus funcionar tenho que:

1º - Criar o Jpanel com o JButton
2º - Adicionar o Jpanel a meu JFrame
3º - Requisitar o foco ao botão.

Só funciona se for nesta ordem, se eu chamar requestFocus no 2º passo não vai.

Até que tem sentido olhando assim.

Criado 5 de maio de 2009
Ultima resposta 6 de mai. de 2009
Respostas 4
Participantes 3