Meus amigos, estou procurando uma solução mas nem sei como e por onde começar a pesquisa.
Quero chamar uma determinada função se o usuário ficar 3 segundos sem pressionar nenhuma tecla, como faço?
Chamar função após 3 segundos sem pressionar teclas
5 Respostas
Dá um olhada no método sleep()… Da classe Thread
o Sleep não consegui,
A idéia do sistema seria basicamente um player. Ele é controlado por algumas teclas, C seleciona o cantor e M seleciona a música.
Quando estiver passando um vídeo ( usando o JMF ) e nenhuma tecla ( C ou M ) for pressionada, preciso aumentar o tamanho do vídeo.
a única função que preciso agora é essa para detectar quando nenhuma tecla for pressionada dentro de três segundos.
Vlwww
No .Net exite um componente chamado Timer que gera eventos de tempos em tempos. Dá uma olhada e vê qual é o correspondente em Java que pode salvar sua pele.
Abraço
De uma pesquisada sobre a api TimerTask
Vamos lá meus amigos, o cenário agora é o seguinte, estou quase conseguindo uma solução:
Uma class chamada BasicTimer ( foi copiando de alguns lugares na net )
package absoluta.web;
import java.util.Timer;
import java.util.TimerTask;
public class BasicTimer {
Timer timer;
Boolean parar = true;
public BasicTimer(int seconds) {
parar = true;
timer = new Timer();
timer.schedule(new RemindTask(), seconds*1000);
System.out.println("Time's up!");
}
class RemindTask extends TimerTask {
public void run() {
if (parar){
System.out.println("Time's up!");
}
timer.cancel(); //Terminate the timer thread
}
}
public void fecharThread()
{
parar = false;
}
}
Na minha classe principal tenho a chamada da seguinte forma:
BasicTimer controleTempo = new BasicTimer(3);
Ao teclar o C:
if (e.getKeyCode() == KeyEvent.VK_C){
controleTempo.fecharThread();
BasicTimer controleTempo = new BasicTimer(3);
}
O que preciso agora é matar o processo se pressionar a tecla C repetidas vezes e sem intervalos, devendo aparecer apenas uma vez: “Time’s up!”