Boa noite a todos!
Como saber qual componente dentro de um jframe ganhou o foco?
Att
Boa noite a todos!
Como saber qual componente dentro de um jframe ganhou o foco?
Att
Existe a necessidade de saber isso?
public Component getFocusOwner();
Boa tarde a todos.
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