Ok, ho un programma che ho scritto che deve effettuare diverse operazioni che possono arrivare a richiedere qualche minuto per la loro esecuzione.
Quindi, per non lasciare l'utente da solo a disagio durante l'esecuzione, vorrei farsì che quando preme sul pulsante "esegui", gli si apra un piccolo dialog in cui mano a mano che effettuo le operazioni riporto a "mo'" di log i risultati ottenuti.
Ho scritto quindi una classe che estende JDialog (class Creazione) in cui c'è semplicemente un JScrollPane che continee una JList (log) e un bottone "ok" disabilitato che servirà per chiudere il dialog finite le operazioni.
Utilizzo la JList attraverso un DefaultJListModel (logModel).
Riporto ora il codice della funzione che apre il Dialog e fa partire l'esecuzione:
codice:
void funzione(){
Creazione c=new Creazione(null, "Elenco operazioni", false);
c.setSize(560,360);
c.setResizable(false);
c.setVisible(true);
this.setEnabled(false);
c.logModel.addElement("Inizio esecuzione in corso:");
c.logModel.addElement("l'operazione può richiedere diversi minuti a seconda del numero di operazioni.");
c.logModel.addElement("________________________________________________________________________");
c.setVisible(true);
esegui()//funzione che esegue le operazioni necessarie
c.logModel.addElement("Le operazioni sono state eseguite correttamente");
c.Ok.setEnabled(true);
this.setEnabled(true);
}
Tralasciando il fatto che non passo c alla funzione esegui (verrà poi implementato) il problema è il seguente.
Quando parte l'esecuzione viene disegnata a schermo la finestra del dialog, ma completamente vuota.
Vengono eseguite le operazioni e finito tutto viene disegnato anche l'internod ella finestra di Dialog... Il risultato non è affatto quello desiderato.
Io vorrei che ogni volta che vado ad aggiungere un elemento alla Jlist log, questa venga immediatamente aggiornata sullo skermo.
Dove sbaglio?
Cosa posso fare?
Ringrazio tutti per l'aiuto che mi darete.
ciao!