Buongiorno,
spero che la giornata sia iniziata abbastanza bene. Continuo a ringraziarti e non mi stancherò mai di farlo, per il piacere, al quanto pare di entrambi, ed al tempo impegnato per aiutarmi a comprendere questo meraviglioso linguaggio.
Sono felice di aver capito quello che hai fatto prima, il che vuol dire che non sono tanto bloccato di cervello ehehehehe !
Proviamo ad andare avanti
Vediamo se ho capito da quello che ho letto : bisogna implementare un altro metodo nella classe Countdown, simile a quella dello start, però per l' interrupt() e per fare questo bisogna :
- aggiungere un altra variabile nella classe Countdown oltre a queste :
Quote:
public class Countdown
{
final private long DELAY;
final private Runnable COUNTER_THREAD;
// listerns support for countdown events
private Collection<CountdownListener> listeners;
|
tipo :
Quote:
|
final private boolean FLAG;
|
e nel metodo Countdown :
Quote:
public Countdown(long delay)
{
DELAY = delay;
COUNTER_THREAD = new Counter();
}
|
modificarlo così :
Quote:
public Countdown(long delay,boolean flag)
{
DELAY = delay;
COUNTER_THREAD = new Counter();
FLAG = flag;
}
|
ovviamente modificando anche la chiamata al metodo quando schiacchio il bottone start.
poi implementare il metodo interrupt() così :
Quote:
public void interrurpt()
{
if ( FLAG){
t.interrupt(); // il thread è stato creato prima in start()
}
}
|
-----------------------------------------------------------
Andiamo alla gestione dei bottoni, ovvero nell'actionPerformed:
-inizializzo una variabile esterna al controllo se i singoli tasti sono attivati;
- le operazioni da svolgere quando viene premuto il bottone "Avvia Timer" , che sono :
Quote:
if (bottone.equals("Avvia Timer")) {
long time = Long.parseLong(timer.getText());
Countdown counter = new Countdown(time);
counter.addListener(new CountdownListener(){
public void countdownEnded(float seconds) {
lab2.setText("CARICA COMPLETATA !!!");
|
diventano così : ( perchè ho aggiunto il passaggio della variabile flag)
Quote:
if (bottone.equals("Avvia Timer")) {
flag=false;
/* non so se è giusto inizializzarla a false, tanto non dovrebbe fare nulla, è solo un modo per inizializzarla e comunque differirla dal true che servirà nella gestione dell'interrupt() quando viene schiacciato il pulsante "Ferma Timer" */
long time = Long.parseLong(timer.getText());
Countdown counter = new Countdown(time,flag); //<----- MODIFCA
counter.addListener(new CountdownListener(){
public void countdownEnded(float seconds) {
lab2.setText("CARICA COMPLETATA !!!");
|
- le operazione da svolgere quando si preme "Ferma Timer", saranno :
Quote:
if (bottone.equals("Ferma Timer")) {
flag=true;
// e adesso !?!??!?!?!
}
|
Qui mi sono impanicato, sperando che il resto sia giusto!
Ti auguro buona giornata!