Olá pessoal, eu tenho um botao que vai executar determinada acao de acordo com qual componente do jdialog esteja com o focu, porem quando se clica no botao ele ganha o focu, por esse motivo preciso descobrir qual componente que estava com o focu ou transferiu para o botao e nao tenho ideia de como fazer isso, alguém pode ajudar? Obrigado!
Adiciona em todos os teus componentes, o FocusListener e implementa o focusLost. Assim tu consegue saber quem foi o último componente a perder o foco. Essa é uma maneira de fazer.
Fernando Rosa
Valeu pela ajuda amigo, mas pelo que entendi dessa forma nao me ajuda muito, pois implementei um evento “global” no jdialog para que funcione independentemente de qualquer componente que esteja com o focu, ou seja, justamente pra nao implementar um evento em cada componente…
Obrigado!
Cara, sempre que eu quero sair da interface atual e voltar a ela posteriormente no mesmo ponto onde estava eu crio um método para registrar quem está com o foco, e então atribuo uma identificação ao componente…
Tipo, antes do JDialog iniciar capturo o componente em foco com o método getFocusOwner().getName();
Para saber ainda se um determinado componente está com o foco, verifique if (componente.isFocusOwner())…
E após a inicialização do JDialog atribua o foco novamente ao componente com requestFocus();
Um abraço!
Ah, sem falar que para esse caso você pode também atribuir uma identificação para cada componente através de uma variável String, por exemplo, para que toda vez que o componente ganhe o foco ele se identifique, tipo stringComponente = “jButton1”… Daí você compara, no JDialog, a última identificação realizada e executa a ação segundo o componente identificado na variável… Sakas???
T+
Olá amigo! De acordo com a sua sugestao posso armazenar o componente que esta com o focu, e depois verificar qual estava com esse focu. O problema aqui é que vou clicar em um botao, ou seja, o botao vai ganhar o focu. Entao tenho que guardar o componente na variavel na ação do botao, mas nesse ponto o botao já ganhou o focu, como vou guardar o componente que estava com o focu? Colocar um focuslost em cada componente nao me ajuda muito. Obrigado!
Uma maneira mais simples é usar o método getOppositeComponent() da classe FocusEvent, esse método te retorna o componente que perdeu o foco caso ocorreu um focusGained ou o componente que ganhou o focus no caso de focusLost.