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; } }

Rispondi quotando