Pessoal… Estou fazendo uma aplicação em que o usuário utiliza teclado virtual para digitar sua senha…
Não é por questão de segurança não… É porque ele não vai se dispor de um teclado.
Existe o campo do usuário (jTextField1) e o da senha (jPasswordField1).
Colokei 1 botão escrito “A”, e coloquei isso nele:
[code] if (jTextField1.hasFocus()) {
String m = jTextField1.getText();
jTextField1.setText(m + “A”);
jTextField1.requestFocus(true);
}
Problema:
Não funciona… O focus pode estar no jTextField1, mas ele não entra na condição do hasFocus. Como que eu valido se ele está com o focus ou não?
Já tentei com hasfocus e com o isfocusowner, mas nenhum da certo.
faz muito tempo que não mexo com Swing… mas a dúvida da lina já deve te ajudar… porque pelo que me lembro trabalhar com focus em Swing dá um pouco de trabalho, e é bom saber em que trecho de código você está verificando isso.
Fiz um frame aqui rapidamente, que tem um field pro user name, e outro pro password… e um botão.
O botão verifica qual componente tem o focus. O detalhe é o seguinte. Quando você clica no botão… O BOTÃO TEM O FOCUS :-o hahahaha, te juro. Quando você clica nele, ele tem o focus. Portanto, o que eu queria era saber “o último ‘focado’”… ou o último componente que teve o focus… como é um cenário um pouco mais específico, criei um FocusListener que me diz quem foi o último focado.
Desculpa se o código está feio, eventuais erros e a ficar usando a palavra focado… parece até que foi transformado em foca.
Você poderá utilizar “flags” para identificar em qual componente você tem foco.
Por exemplo:
1-> Inicie a sua tela com o foco no campo de texto
2-> Crie um FocusListener para ele e assim que ele ganhar o foco define sua flag true;
3-> Quando você clicar no botão você apenas inverte o valor da flag.