Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - fare aspettare il termine di un metodo
Forum - Java - fare aspettare il termine di un metodo

Avatar
andreamica (Ex-Member)
Rookie


Messaggi: 24
Iscritto: 25/02/2007

Segnala al moderatore
Postato alle 21:13
Lunedì, 09/06/2008
ciao a tutti, ho appena iniziato a programmare in Java. Il codice delle due classi è nell'allegato.
Il programma serve per calcolare il costo dei biglietti del pullman e deve prendere in input due numeri. Lo fa nella classe interfaccia. Se i giorni sono più di 4 Interfaccia() chiama RadioScelta che permette di scegliere se i giorni sono riferiti a una o più settimane. Si clicca e si preme Ok (nel codice è il JButton procedi) e qui dovrebbe modificare una variabile globale "scelta". Solo che mentre viene eseguito il metodo per assegnare scelta quando si preme il pulsante procedi, il programma continua ad andare e fa fare il return a RadioScelta() e quindi ogni modifica a  scelta è inutile. Dovrei fare in modo che il programma avanzi solo dopo che la variabile "scelta" è stata modificata. Spero che si è capito qualcosa ma credo che eseguendolo capirete il problema.


andreamica ha allegato un file: CostiPullman.zip (3535 bytes)
Clicca qui per scaricare il file
PM Quote
Avatar
Invisigoth (Ex-Member)
Newbie


Messaggi: 6
Iscritto: 30/11/2007

Segnala al moderatore
Postato alle 17:51
Mercoledì, 11/06/2008
mmmmm..
A quanto ho potuto vedere dal codice non credo ci siano problemi se RadioScelta() ritorna subito...è normale che ritorni. Le modifiche alla variabile globale scelta vengono effettuate come previsto. Forse credi che ci sia un problema perchè guardi l'output su consolle e vedi che scelta è ancora impostato col valore di default (-2). Ma se continui e fai una scelta e poi attivi il button procedi la variablie globale scelta viene cambiata. Dunque a quanto ho capito il problema è che forse tu effettui un controllo sulla variabile scelta appena dopo aver richiamato RadioScelta() (ke apre un JFrame). In questo caso allora si presenta il problema. Per aspettare la fine di RadioScelta() non sò che dirti...forse avviarlo in un Thread e richiamare Thread.join() prima di effettuare il controllo su scelta, ma è un artificio forzato. Secondo me il problema di fondo è che usando un interfaccia utente grafica devi poi impostare una struttura dell'applicazione di tipo Event-Driven, il che esclude chiamate a metodi che creano JFrame e che ritornano valori. E' un problema di progettazione!Adesso puoi creare delle "vie di fuga" per ovviare ai problemi, ma più l'applicazione diventa complessa e più ti ritroverai in un pasticcio....
Non sò se sono stato abbastanza chiaro nella risposta scusa :\

PM Quote