Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Java - timer periodico

    Salve a tutti,
    dovrei inserire nel mio programma un timer che dovrebbe separare ogni mia esecuzione. Per farvi capire meglio il mio programma archivia dei file e, ad ogni archiviazione, dovrebbe attivarsi un timer (con tempo prestabilito) che dovrebbe separare ogni archiviazione. Ho trovato un timer perfetto usando l'istruzione new CountDown(); che richiama la classe CountDown che contiene il seguente codice:

    Timer timer;

    public CountDown() {

    timer = new Timer();

    timer.schedule(new CountDown.DisplayCountdown(), 0, 1000);

    }

    class DisplayCountdown extends TimerTask {

    int seconds = 60;

    public void run() {

    if (seconds > 0) {

    System.out.println(seconds + " secondi rimanenti");

    seconds--;

    }
    else {

    System.out.println("Countdown finito");

    System.exit(0);

    }
    }
    }
    }

    Ecco il problema: il timer è perfetto se messo fuori da un ciclo, cosa per me impossibile perchè il mio programma DEVE girare dentro un ciclo. Qualcuno sa darmi qualche suggerimento?

  2. #2

    risposta

    mmm.... io per il timer utilizzo questo codice, guarda se ti può servire d'aiuto. ma non ho ben capito cosa vuoi dire con il timer fuori dal ciclo.

    codice:
    import javax.swing.Timer;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    
    public class prova(){
    
           private Timer timer;
           private int tempo = 50;
    
           public prova(){
    
                   ascoltaTimer at = new ascoltaTimer(tempo);
                   timer = new Timer(100, at);
    
           }
    
           public class ascoltaTimer implements ActionListener {
    
                  int tempo;
    
                  public ascoltaTimer(int tempo){
     
                        this.tempo = tempo;  
    
                  }
    
                  public void actionPerformed(ActionEvent e){
     
                         tempo--;
       
                         if(tempo <= 0){
                              System.out.println("tempo finito");
                              timer.stop();
                         }else{
                              System.out.println("secondi " + tempo);
                         }
      
                  }
           }
    }
    il codice l'ho creato qua sul momento, se hai intenzione di ricopiarlo, guarda che forse avrò fatto qualche errore con la t o la d, non so, errori grammaticali al massimo =) =) =)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.