Aplicação com Timer Interno

0 respostas
ccefetpb

Estou fazendo uma aplicação web e em uma das paginas a um cronometro , abaixo do cronometro a os botoes ( start , stop , continue e reset ) ,O cronometro e regressivo e bem nessa pagina tem mais um monte de botões que gerama ações diferentes que serão interpretadas por um servlet que depois retornará a pagina , isso vai acontecer enquanto o tempo não zerar.
A minha duvida é como fazer esse cronometro .
Primeiro pensei em usar uma tread

public class TimeThread implements Runnable{
	private int hora,minuto,segundo;
	
	public int getHora() {
		return hora;
	}

	public void setHora(int hora) {
		this.hora = hora;
	}

	public int getMinuto() {
		return minuto;
	}

	public void setMinuto(int minuto) {
		this.minuto = minuto;
	}

	public int getSegundo() {
		return segundo;
	}

	public void setSegundo(int segundo) {
		this.segundo = segundo;
	}

	public TimeThread(int hora,int minuto,int segundo) {
		setHora(hora);
		setMinuto(minuto);
		setSegundo(segundo);
	}
	

	public void run() {
		
	     
	     try {
	    	 System.out.println(hora+" : "+minuto+" : "+segundo); 
	     	do{   
	   	     
	     		 Thread.sleep(10);
	    	  
	    		 
	    		 if (segundo == 0)
	    		 {  segundo=59;
	    		 	
	    		 	if (minuto == 0)
	    		 	{
	    		
	    		 		minuto=59;
	    		 		if ( hora == 0 )
	    		 			break;
	    		 		else
	    		 			hora--;
	    		 	}else
	    		 		minuto--;
	    		 }
	    		 else
	    			 segundo--;
	    		 System.out.println(hora+" : "+minuto+" : "+segundo);
	    	 }while ( minuto != 0 || segundo != 0 || hora != 0);
	     } catch (InterruptedException e) {
    		 // TODO Auto-generated catch block
    		 e.printStackTrace();
    	 }
        
	}
	
	

}

No console essa logica funcionou , entretando estou fazendo uma aplicação web , pra testar eu coloquei numa pagina JSP .

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

<%@ page import="thread.*,java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<% new Thread(TimeThread.obterInstancia()).start(); %>
	<h1>
		<% while ( Thread.currentThread() != null ) { %>
			<%=TimeThread.tempo()%>
		<%} %>
	</h1>
</body>
</html>

E foi ai que tudo deu errado , a pagina JSP trava por que ela não consegue carregar enquanto a thread ta escrevendo nela . Então descartei essa ideia , ai pensei vou usar java script :

<html>
	<head>
<html>
<head>
<script type="text/javascript">
var c=0;
var t;
var timer_is_on=0;

function timedCount()
{
document.getElementById('txt').value=c;
c=c+1;
t=setTimeout("timedCount()",1000);
}

function doTimer()
{
if (!timer_is_on)
  {
  timer_is_on=1;
  timedCount();
  }
}

function stopCount()
{
clearTimeout(t);
timer_is_on=0;
}
</script>
</head>

<body>
<form>
<input type="button" value="Start count!" onClick="doTimer()">
<input type="text" id="txt">
<input type="button" value="Stop count!" onClick="stopCount()">
</form>
</body>
</html>

E fiquei muito feliz pois era mais ou menos isso que eu queria , entretando esse script tem um problema quando a solicitação vai pro servlet e volta pra pagina o contador ta reiniciando , e o que eu queria e que ele continua-se apartir de onde estava como se nada tivesse acontecido .
Não sei se estou indo pelo caminho certo , alguem pode me ajudar .Como fazer pro relogio não reiniciar , mas o resto da pagina precisa ser reiniciado .

Agradeço .

Criado 3 de novembro de 2009
Respostas 0
Participantes 1