Threads em java....!

2 respostas
R

Pessoal:

Tenho a seguinte situação:

tenho uma tela, onde há um componente do tipo jTextField. Lá dentro irei ter um contador do seguinte formato (mm:ss), ou seja, minutos e segundos. COmo faço para ele mostrar os minutos e segundos passando realemente, ou seja, contando em tempo real os minutos e segundos?? Depois, quando clicasse em um botao e mandasse gravar no banco, ele deveria gravar no banco o horário que eu cliquei no botao.
Isto necessita de thread??

Obrigado

Richard :?:

2 Respostas

Guilherme_Silveira

voce deve ter duas etapas distintas:
uma que eh o botao, que ao ser clicado ira pegar o tempo real e ira gravar no banco de dados

outra eh uma Thread que updata o valor do field a cada um segundo, mas preste atencao, nao salve o valor do field e sim um valior pego no momento do botao ser clicado!

Thread t = new Thread() {

public String pegaData() {
  // codigo que retorna a data, veja o tutorial sobre data
}

public void run() {
    while ( true) {
       field.setValue(pegaData());
       // dorme um segundo
       Thread.sleep(1000);
    }
}

}

t.start();

Ai esta o codigo. Ele primeiro cria uma thread e comeca ela, que ira rodar para sempre (while(true)), mudando o valor do field e dormindo 1 segundo..
Eu nao tenho como lembrar agora a excecao que pode ser throwada no Thread.sleep, mas voce deve incluir um try/catch ao redor da chamada.

Abraco

Guilherme

C

Apenas complementando a resposta do guilherme, a exceção que é jogada é a java.lang.InterruptedException, neste caso, o código ficaria assim:

Thread t = new Thread() {

public String pegaData() {
  // codigo que retorna a data, veja o tutorial sobre data
}

public void run() {
    while ( true) {
       field.setValue(pegaData());
       // dorme um segundo
       try {
          Thread.sleep(1000);
       } catch (InterruptedException ie) {
            // tratamento....
       }
    }
}

}

t.start();

Abraço!

Criado 14 de setembro de 2002
Ultima resposta 9 de nov. de 2002
Respostas 2
Participantes 3