View Single Post
Old 26-03-2010, 10:12   #15
ciccio5
Junior Member
 
L'Avatar di ciccio5
 
Iscritto dal: Oct 2008
Messaggi: 29
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;
Quote:
boolean flag;
- 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!
__________________
Toshiba Satellite A300-1GC ,Intel C2D P8400 3Mb L2 1066FBS, 4Gb DDR2, HD320Gb SATA, ATI Mobility Radeon HD3650
ciccio5 è offline   Rispondi citando il messaggio o parte di esso