Olá
Eu estou fazendo uma aplicação e eu queria fazer o seguinte
Criar um campo de pesquisa que o usuário digita e a aplicação faz a consulta enquanto ele escreve
Sem apertar enter nem clicar em nenhum botão
Pra aplicação não ficar muito pesada eu quero implementar um KeyListenner que conte um delay de 2 segundos(por exemplo) pra fazer a pesquisa. Quando o usuário começar a digitar ele começa a contar os 2 segundos e sempre que ele apertar um botão recomeça a contar o delay do 0.
Então a aplicação so vai executar a pesquisa se o usuário parar de digitar por 2 segundos
Eu criei a Thread abaixo so pra teste
Quando o usuário começa a digitar ele vai chamar o metodo run.
Sempre que uma tecla for pressionada ele vai chamar setTempo(0);
O problema é que quando eu chamo o método run a tela trava
public class SearchDelay implements Runnable {
private int tempo = 0;
public void run() {
try {
while (tempo <= 2) {
System.out.println("Tempo: " + tempo);
Thread.sleep(1000);
tempo++;
}
tempo = 0;
System.out.println("Fim");
} catch (InterruptedException ex) {
Logger.getLogger(TesteJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
public int getTempo() {
return tempo;
}
public void setTempo(int tempo) {
this.tempo = tempo;
}
}