Chamar função após 3 segundos sem pressionar teclas

5 respostas
D

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?

5 Respostas

fernandosavio

Dá um olhada no método sleep()… Da classe Thread

D

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

fernandosavio

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

leonardobhbr

De uma pesquisada sobre a api TimerTask

D

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!”

Criado 1 de outubro de 2011
Ultima resposta 1 de out. de 2011
Respostas 5
Participantes 3