Domanda:
Problema con JAVA, interfaccia grafica?
omgzor666
2010-08-28 10:24:44 UTC
Salve a tutti

Sto realizzando un progetto per l'università, un gestore di hotel e prenotazioni, che deve poter essere avviato sia con interfaccia grafica che testuale, a seconda della scelta dell'utente.

In breve funziona così:
1) leggi un archivio (file testuale) e copia le informazioni in strutture dati
2) modifica le strutture dati nell'interfaccia grafica o testuale
3) scrivi il contenuto delle strutture dati nel file archivio

l'interfaccia testuale funziona bene, ed usa gli stessi metodi dell'interfaccia grafica per la logica del programma.

Il problema è che la scrittura del file avviene PRIMA che sia chiusa l'interfaccia grafica, anche se nel codice la scrittura è situata all'ultima riga.

quindi succede che:
1) leggi file archivio
2) scrivi file archvio
3) fai modifiche alle strutture dati mediante interfaccia grafica

quindi non viene registrata nessuna modifica....
Come faccio a far in modo che vengano eseguite delle azioni DOPO la chiusura dell'interfaccia grafica?

grazie :D
Tre risposte:
anonymous
2010-08-28 13:11:46 UTC
Premessa: i programmi con interfaccia testuale generalmente hanno un flusso sequenziale delle operazioni (fai A, fai B, se c'è questa situazione fai C ...); al contrario i programmi che utilizzano un interfaccia grafica evolvono rispondendo ad eventi (è stato premuto un pulsante, dato il focus ad un elemento, premuto un tasto ...)



Non ho visto il tuo codice ma a naso hai scritto una cosa del tipo:



- leggi i file

- avvia l'interfaccia grafica

- salva il file



aspettandoti che l'istruzione che avvia l'interfaccia grafica termini quando chiudi l'interfaccia grafica. E qui la trappola. Quando avvi l'interfaccia grafica l'istruzione non aspetta la chiusura della GUI, invece parte un nuovo thread che si occupa della gestione dell'interfacccia grafica. Quando il thread che esegue il main() termina, la JVM attende che termini il thread che gestisce l'interfacia utente, quindi tu ti trovi l'interfaccia utente attiva quando i dati sono già stati salvati (si, ci sono più thread anche se non li hai creati esplicitamente)



Cosa dovrebbe fare il tuo programma ? Leggere il file ed avviare l'interfaccia grafica; il salvataggio dei dati lo richiamerai o gestendo l'evento di chiusura della GUI o la pressione di un pulsante di salvataggio (usualmente "salva"). Direi che basta a dimostrare che hai capito come funzionano le cose.



Un programma da dare in mano ad un utente nella vita reale:

- salva i dati alla pressione del tasto salva (magari chiedendo conferma)

- in risposta ad un tentativo di chiusura, avverte se ci sono dati nuovi e chiede se confermare l'operazione perdendo i dati
zedda_piras25
2010-08-28 18:28:43 UTC
la chiusura dell'interfaccia è un evento come premere un bottone

basta che a quell'evento fai quello che devi fare
?
2010-08-28 17:26:20 UTC
www.micro.forumfree.i kiedi qua


Questo contenuto è stato originariamente pubblicato su Y! Answers, un sito di domande e risposte chiuso nel 2021.
Loading...