Como saber que focusLost foi acionado pela tecla TAB?
4 respostas
D
daniellybifaratte
Olá turma,
Como vou saber se o focusLost(FocusEvent e) de um componente foi acionado devido ao aperto da tecla TAB e não por outra tecla qualquer?
Assim: antes do foco mudar de componente, gostaria que o focusLost tivesse algum meio de saber que ele foi chamado porque a tecla TAB foi pressionada.
Olhei a classe FocusEvent mas lá nada tem a respeito…
Obrigada, aguardarei ajuda.
Por que você quer saber se foi o especificamente o tab?
Geralmente, não se usa eventos do tipo focusLost em Swing, por eles não serem multiplataforma.
D
daniellybifaratte
Porque quando a tecla tab é pressionada, o foco muda para o próximo componente. Para todos os componentes da tela, está correto, porém em determinado ponto quando o componente x ganha o foco, este só poderá sair depois que pressionado um dos componentes x ou y. Consegui fazer isso mas a tecla TAB estraga tudo pois ela não é detectada no keyListener(KeyEvent e) quando pressionada. Precisaria identificar que ela foi pressionada para evitar a troca de foco.
Não usar focusLost por não ser multiplataforma… entendi moço mas, devo usar o que no lugar?
Obrigada.
ViniGodoy
Existem objetos específicos para fazer validações e coisas do tipo:
- O InputVerifier, que faz validação do campo de texto quando ele sai de foco;
- O Document, que permite mapear modificações no texto;