Oi RenanRosa, consegui aqui… é mais ou menos o que você disse mas acho que você não entendeu o que quis dizer, eu estou querendo que ao digitar o que vai ser buscado no JTextField ele espere 3 segundos para iniciar a busca… Do mesmo jeito da busca de amigos no orkut por exemplo…
Segue o código de como consegui…
Primeiro, no início da classe, declaro um Timer e um AbstractAction.
...
private Timer timer;
private AbstractAction action;
...
Na minha aplicação (espero que na de vocês tenha) tem um método de inicialização de componentes, então inicializei o Timer e a Action. Como a AbstractAction é uma Interface tive que implementar o método actionPerformed. Setei o timer com 3 segundos e passei a action que é a ação que será executada, também setei o timer.setRepeats para false para ele não repetir a ação e executar apenas uma vez por chamada.
action = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
if (jRadioButtonCodigo.isSelected() && !campoPesquisa.getText().equals("")) {
System.out.println("BUSCA POR NÚMERO");
buscaPorNumero();
} else if (jRadioButtonNome.isSelected()) {
if (campoPesquisa.getText().length() >= 3) {
System.out.println("BUSCA POR STRING");
buscaPorString();
}
}
}
};
timer = new Timer(3000, action);
timer.setRepeats(false);
Depois no handler campoPesquisaKeyTyped apenas chamo o timer.stop() pra parar qualquer chamada anterior e dou um timer.start() novamente para voltar a contar os três segundos para executar a ação;
private void campoPesquisaKeyTyped(java.awt.event.KeyEvent evt) {
timer.stop();
timer.start();
}
Pronto! Assim busca só será feita após 3 segundos de quando eu parar de digitar!
Obrigado a todos! Um abraço.