Olá pessoal
Bom, antes de mais nd, quero dizer que ja procurei aqui no guj, em outros foruns de discussao e no google, inclusive achei varios exemplos, mas nenhum resolveu a ultima parte do meu cronometro, que é os milissegundos, e que eu quero fazer um cronometro que mostre os minutos, segundos e os milissegundos, ou seja, de 0 a 999 antes de incrementar mais um nos segundos, como o cronometro de um relogio de pulso mesmo...
Bom abaixo segue um link de um post daqui do guj que leva a outros 3 posts, sao varios exemplos, mas nenhum resolveu a parte dos milissegundos.
[url]http://www.guj.com.br/posts/list/71533.java[/url]
Eu fiz um codigo que funciona +-, pra isso tomei por base o exemplo desse link, o segundo post do tópico, só que fiz uma alteração pra que o cronometro seja atualizado constantemente na tela, o problema desse exemplo é que ele nao zera a variável dos milissegundos ao chegar em 1000.
[url]http://www.guj.com.br/posts/list/71349.java[/url]
public class Cronometro implements Runnable {
private long inicio;
private long minuto;
private long segundo;
private long milisegundo;
public Cronometro() {
inicio = 0;
milisegundo = 0;
new Thread(this).start();
}
@Override
public void run() {
inicio = System.currentTimeMillis();
while (!pararCronometro) {
try {
if (milissegundos() > 990 && milissegundos() < 1020) {
inicio = System.currentTimeMillis();
segundo = (segundo < 60) ? segundo + 1 : 0;
minuto = (segundo == 0) ? minuto + 1 : minuto;
}
jtfCronometro.setText(minuto + ":" + segundo + ":" + milissegundos());
Thread.sleep(1);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
//Retorna o tempo em milissegundos
public long milissegundos() {
synchronized (this) {
return milisegundo = System.currentTimeMillis() - inicio;
}
}
//Retorna o tempo em segundos
public long segundos() {
synchronized (this) {
return segundo = milissegundos() / 1000;
}
}
//Retorna o tempo em minutos
public long minuto() {
synchronized (this) {
return minuto = milissegundos() / 100000;
}
}
}
Thread t = new Thread(new Cronometro());
Obs: Eu deixei meu cronometro funcionando durante 5 minutos e 43 segundos, e ele estava 3 segundos atrasado em relação ao relogio do windows.
Alguem sabe fazer um cronometro com milissegundos que realmente funcione ???
Obrigado t+
