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 .