[quote=digaoneves]ja pensou em fazer um for que vai diminuindo o valor dessa variável a cada loop?
deve haver alguma classe utilitária pra isso, mas não conheço hehehe…
a idéia básica é: public static void main(String[] args){
int segundos = 10;
try{
for (int i = segundos; i > 0; i--){
System.out.println(i + " segundos");
Thread.sleep(1000); // 1 segundo
}
System.out.println("Terminei!");
} catch (InterruptedException e){
System.out.println("Interromperam meu sono!");
}
}
Sei que dizem que usar Thread.sleep() é péssimo, mas foi o jeito mais simples que encontrei pra criar um exemplo :)[/quote]
[quote=ByIvo]Amigo, esses dois códigos acima funcionam, mas pelo que eu entendi da sua necessidade, esse timer terá de roda em paralelo com uma outra aplicação certo?
O melhor é criar uma Thread.
Observe o código:
Talvez tenha algum erro de sintaxe, mas basicamente é isso:
class Timer {
public static void main(String[] argumentos){
// instancia uma thread, passando como construtor uma implementação de runnable.
//runnable é uma interface, que implementa o metodo run, quando a thread é statada(.start();), o método run() é executado.
// o parâmetro do construtor da classe ExecucaoDoThread é o número que vai ser decrescido até 0
Thread t = new Thread(new ExecucaoDoThread(10));
t.start();
}
class ExecucaoDoThread implements Runnable{
private int num;
public ExecucaoDoThread(int num){
//o num vai receber o numero que vai ser descrescido até 0;
this.num = num;
}
@Override
public void run(){
//aqui vai o código que será executado pela thread
//cria um jframe e seta seu tamanho
JFrame frame = new JFrame();
frame.setSize(200,200);
//cria uma jlabel, adiciona no frame e chama o metodo do, passando essa label como parametro
JLabel label = new JLabel();
frame.add(label);
go(label);
}
public void go(JLabel label){
//faz um for que vai de num até 0, no passo -1.
//cada loop do for, troca o valor do label por i, e espera 1 segundo ( utilizando o metodo static Thread.sleep(); e passando o tempo em millis que deverá aguardar
for(int i = num;i>=0;i--){
try{
label.setText(i+"");
Thread.sleep(1000);
}catch(Exception ex){}
}
}
}
}
Acho que vai funcionar…
qualquer dúvida, procure tutoriais sobre Threads ou me mande uma mensagem que eu volto a explicar.[/quote]
Então, esse timer roda em paralelo sim, é uma tabela com diversas linhas, onde cada uma levará um contador próprio, e um dos horários para esse cálculo será o horário atual.
Estava verificando essa solução utilizando threads, porém não seria até mais seguro utilizar um servidor que seta o relógios dos computadores (para o usuário não mexer) e usar o horário do pc como base pra cada cálculo?