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

    TIMER..problema con i millisecondi e stop!

    ciao..
    sto cercando di creare un timer in modo che fissata una frequenza (battiti che ho al minuto) mi si illumini un cerchio ad ogni battito.

    ora...
    il programma me lo compila, ma penso di aver sbagliato il dalay.. che per un minuto sono 60000 millisecondi e non mi funziona il tasto stop..

    inoltre premendo reset mi si dovrebbero azzarare tutti i valori....ma non succede!!

    vi posto il codice...
    (ho chimato ritmo la seri dei tempi in base 2-3-4 che posso scegliere dall'interfaccia. Le battute si riferiscono alla seriedei tempi completa al minuto)..grazie!!!!

    codice:
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.Timer;
    
    class GestoreTimer {
    
        private Timer timer;
    
        // numero di tempi eseguiti sinora
        private int numeroTempiTotaleAttuale = 0;
    
        // tempo eseguito nella battuta corrente - RITMO
        private int tempoAttuale             = 0;
    
        // numero di battute eseguite sinora -Battuta
        private int battutaAttuale           = 0;
    
        // numero di tempi presenti in ogni battuta - FREQUENZA
        private int tempiPerBattuta          = 0;
    
        public final static int ONE_SECOND = 1000;
    
        // imposta il timer ad una frequenza unitaria
        public GestoreTimer() {
            timer = new Timer(ONE_SECOND, taskPerformer);
        }
    
        // imposta il timer ad una frequenza arbitraria
        public GestoreTimer(double iFrequenza) {
            timer = new Timer( new Double(ONE_SECOND/iFrequenza).intValue() , taskPerformer);
        }
    
        // imposta la frequenza del Timer
        public void impostaFrequenza(double iFrequenza) {
            timer.setDelay(new Double(ONE_SECOND/iFrequenza).intValue());
        }
    
        public Timer getTimer() {
            return timer;
        }
    
        public int getBattutaAttuale() {
            return battutaAttuale;
        }
    
        public int getTempoAttuale() {
            return tempoAttuale;
        }
    
        public int getTempiPerBattuta() {
            return tempiPerBattuta;
        }
    
        public int getNumeroTempiTotaleAttuale() {
            return numeroTempiTotaleAttuale;
        }
    
        public void setTimer(Timer timer) {
            this.timer = timer;
        }
    
        public void setBattutaAttuale(int battutaAttuale) {
            this.battutaAttuale = battutaAttuale;
        }
    
        public void setTempoAttuale(int tempoAttuale) {
            this.tempoAttuale = tempoAttuale;
        }
    
        public void setTempiPerBattuta(int tempiPerBattuta) {
            this.tempiPerBattuta = tempiPerBattuta;
        }
    
        public void setNumeroTempiTotaleAttuale(int numeroTempiTotaleAttuale) {
            this.numeroTempiTotaleAttuale = numeroTempiTotaleAttuale;
        }
    
        ActionListener taskPerformer = new ActionListener() {
            // azione eseguita ad ogni colpo del timer
            public void actionPerformed(ActionEvent evt) {
                // incrementa il numero totale dei tempi
                numeroTempiTotaleAttuale++ ;
                // determina a che battuta ci si trova
                battutaAttuale = new Double(numeroTempiTotaleAttuale/tempiPerBattuta).intValue();
                // determina il tempo attuale nella battuta
                tempoAttuale = numeroTempiTotaleAttuale%tempiPerBattuta;
                System.out.println(numeroTempiTotaleAttuale);
            }
        };
    
        public void resetTimer() {
         
     	timer.stop();
            numeroTempiTotaleAttuale = 0;
            tempoAttuale             = 0;
            battutaAttuale           = 0;
        }
    
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Quando posti del codice, utilizza i tag CODE, come indicato nel regolamento (punto 6).


    Li ho aggiunti io.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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 © 2025 vBulletin Solutions, Inc. All rights reserved.