Por favor, alguém poderia me dizer qual o método do JTextField que verifica se o mesmo está com o cursor sobre ele?
Um mouse listener pode fazer isso… ele tem o evento mouseEntered(Quando o mouse entra) e mouseExited(quando o mouse sai)
Se não me engano existe um método isFocusOwner().
Focus é uma propriedade do Component, não acredito que seja necessário um Listener para saber se esta propriedade está ativa ou não. Lembre-se que Listeners tratam eventos, e no caso ele não está interessado em saber quando o Component recebeu o foco, e sim se está ou não ativo no momento.
É, existe realmente um método isFocusOwner(), mas não sei porque não funciona . . .
Quando eu dou um requestFocus(), o JTextField recebe o cursor, ou seja, depois de chamar esse método, ele receberá o que eu digitar.
Pois bem, eu queria conseguir testar se ele está com um status igual ao que ele fica depois de chamar esse método requestFocus().
Se tiver outra idéia, por favor, me passa.
Valew
Lembre-se que quando você clica em um botão o foco vai para ele.
De uma olhada neste exemplo que eu fiz, vai ajudar você a entender:
Note que eu defini explícitamente que o Button não é um objeto Focusable, então quando eu clico nele o foco continua no objeto que estava antes.
public class Principal extends JFrame {
JTextField t = new JTextField(20);
JTextField t2 = new JTextField(20);
public Principal() {
getContentPane().add(t, BorderLayout.NORTH);
getContentPane().add(t2, BorderLayout.SOUTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton("Click");
button.setFocusable(false);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(t.isFocusOwner());
}
});
getContentPane().add(button);
}
public static void main(String[] args) {
Principal p = new Principal();
p.setVisible(true);
p.pack();
}
}
Nossa cara, era isso mesmo . . .
Putz, nem tinha me tocado nesse detalhe.
Quando eu clico em qualquer objeto, ele recebe o foco . . .
Essa solução é muito interessante, e realmente funciona.
Deixa eu ver se entndi, quando eu dou esse setFocusable(false); o objeto “perde” a capacidade de receber o foco, certo ?
Mas sabe, será que o JButton suporta algum evento que faz uma ação quando eu clico nele, mas antes dele receber o foco ? (eu sei que é viagem, mas …)
Porque se ele suportar, eu não preciso dar um setFocusable(false); em todos os botões.
De qualquer forma, brigadaum msm.
Foi uma boa lição.