Componente que ganhou o foco

2 respostas
C

Boa noite a todos!

Como saber qual componente dentro de um jframe ganhou o foco?

Att

2 Respostas

J

Existe a necessidade de saber isso?

public Component getFocusOwner();

discorpio

Boa tarde a todos.

Javax2011:
Existe a necessidade de saber isso?

public Component getFocusOwner();

Quanto ao método acima que é declarado na classe Window, se faz necessário emitir mais esclarecimentos.

1º) Como voce pode perceber pela assinatura do método getFocusOwner(), ele realmente retorna um objeto do tipo Component que é uma classe que deriva alguns componentes do java, entretanto se ele é um Component, voce só consiguirá acessar atributos e métodos públicos da classe Component e não do real componente em si, sendo necessário portanto fazer o casting para o componente que se pretende achar, isto é, se voce pretende acessar os métodos do componente que tem o foco.

2º) Se voce apenas pretende somente saber o nome do componente, então fica mais fácil, porém terá que nomear cada componente com o método setName(nome) em cada componente, desta forma:

JTextField txtnome = new JTextField();
   txtnome.setName("txtNome");

Para depois poder usá-lo desta forma

Component comp = getFocusOwner();
   JOptionPane.showMessageDialog(null, comp.getName());

   // Ou ainda simplificando
   JOptionPane.showMessageDialog(null, getFocusOwner().getName());

Um abraço

Criado 24 de outubro de 2011
Ultima resposta 25 de out. de 2011
Respostas 2
Participantes 3