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:
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.
Abraço!
pedroroxd
lina:
Oi,
Esse código esta dentro de um KeyEvent ?
Tchauzin!
Não… Está dentro do click de um botão… (No caso a letra A)
Kinow… Eu não consegui entender seu código não…
É pq sou novo em java, e estou acostumado com frame, além de ele estar todo em ingles… ;X
lina
Oi,
Então… você já parou para pensar que quando o botão é clicado seu foco não está mais no JTextField ?
Tchauzin!
pedroroxd
sim…
só que nao pensei na soução rs
lina
Oi,
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.
if (ib_flag_textfield) {
String m = jTextField1.getText();
jTextField1.setText(m + "A");
}
else if (ib_flag_password) {
{
String m = jPasswordField1.getText();
jPasswordField1.setText(m + "A");
}
// Volta o estado das flags para o inicial.
ib_flag_textfield = false;
ib_flag_password = false;
Pronto. Isso é uma logica que deverá ser melhorada! e nem sempre é uma solução agradavel e boa.
Tchauzin!
pedroroxd
Oi,
Nesse código, ele pede para passar o ib_flag para final: