olá,
fiz um código que mostra o tempo decorrido de uma jogada,
mas só quando clica em um botão é que mostra esse tempo.
Queria fazer este tempo ser mostrado em tempo real.
Sei que ficou bem simples , achei alguns exemplos
usando threads e alguns recursos que não conheço,
então preferi não usar.
Segue meu código:
inicio=System.currentTimeMillis();//armazena a hora inicial da jogada
Seu código é básico, apenas faz o cálculo do tempo, mas
você precisa que isso seja repetido constantemente inclusive
quando outras coisas estão decorrendo, então você precisa
de um processo concorrente. Algo que fique acontecendo
independente do que o programa estiver fazendo, para isso
a única coisa é usar threads.
Threads não são tão complicadas. São só processos disparados
com um evento dentro delas:
Coloquei um botão num Frame e dentro da própria classe do
Frame disparei uma Thread que modifica o valor do tempo no
label do botao>
publicclassMostraTempoextendsjavax.swing.JFrame{privatelonginicio;/** Creates new form MostraTempo */publicMostraTempo(){initComponents();inicio=System.currentTimeMillis();//armazena a hora inicial da jogada //Inicializa a classe da ThreadAtualizaThreadth=newAtualizaThread("Unica");th.start();}publicvoidmostraTempoDecorrido(){longfim=System.currentTimeMillis()-inicio;intseg=(int)(fim/1000);inthora=(seg/3600);intmin=(seg-hora*3600)/60;intseg2=seg-hora*3600-min*60;jBContagem.setText("Tempo: "+Integer.toString(hora)+":"+Integer.toString(min)+":"+Integer.toString(seg2));//mostra o tempo decorrido num button }classAtualizaThreadextendsThread{privateintlapso;publicAtualizaThread(Stringnome){super(nome);lapso=500;//A thread vai se executar a cada meio segundo. }publicvoidrun(){while(true){//O que vc quer que aconteça põe aqui.mostraTempoDecorrido();//esperar um pouco.try{Thread.sleep(lapso);}catch(InterruptedExceptionit){System.err.println(it.toString());}}}}
Naturalmente que o resto da classe do Frame é a de sempre… e não vou postar aqui.
S
stark45
Obrigado pela ajuda, vou me interar sobre o assunto de threads e usar seu exemplo,obrigado!