Aggiornare un JTextField dall'intenro di un ciclo for

di il
4 risposte

Aggiornare un JTextField dall'intenro di un ciclo for

Buongiorno amici,

Non riesco a trovare il modo per aggiornare un campo JTextField mentre è in esecuzione un ciclo all'interno di un metodo.

Per esempio, in un ciclo del tipo:

   ArrayList<String> asList = new ArrayList<>();
   // Caricamento di asList.
   for (int jj=0; jj < asList.size(); jj++) {   
       //  Istruzioni varie che lavorano su dei file.
       TxtLog.setText(jj + "  " + asList.get(jj));
   }

Il campo TxtLog non viene mai aggiornato.

Come si fa per farlo aggiornare durante l'esecuzione del ciclo for?

4 Risposte

  • Re: Aggiornare un JTextField dall'intenro di un ciclo for

    02/10/2025 - ZioCrick ha scritto:

    Il campo TxtLog non viene mai aggiornato.

    Se quel for è già eseguito nel contesto del Event Dispatch Thread (es. a seguito di un evento tipo actionPerformed() di un pulsante, ecc..), no, infatti non funziona.

    Ma è perché Swing non "funziona" in quel modo. Ne avevo già parlato tante volte, ad esempio qui e qui. La cosa migliore che puoi fare è usare un javax.swing.Timer (con tutto quello che comporta). Ma bisognerebbe vedere meglio il contesto del tuo caso specifico.

  • Re: Aggiornare un JTextField dall'intenro di un ciclo for

    Grazie mille andbin!

    Ho guardato gli altri post che hai indicato e mi rendo conto che al momento per me è ancora un argomento che mi richiede parecchio studio e prove, per cui lo rinvio per qualche tempo, perché ora sono alle prese con un problema che mi sta facendo impazzire!

    È quello a questo link:

    https://www.iprogrammatori.it/forum-programmazione/java/problema-puntando-ad-nas-javadotiodotfile-t54810-15.html#p8727177

    Sembra che Java si comporti in modo casuale, ma evidentemente non sto capendo cosa sta succedendo. 

  • Re: Aggiornare un JTextField dall'intenro di un ciclo for

    Aggiornamento.

    Caro andbin visto che con l'altro problema sono in panne, ho provato ad aggiungere un timer come hai descritto in uno dei link che hai riportato, ma tramite un messaggio di log ho verificato che il timer funziona prima di far partire la copia dei file e dopo, ma non mentre eseguo le varie copie.

    Forse non basta il timer ma devo creare diversi thread?

  • Re: Aggiornare un JTextField dall'intenro di un ciclo for

    Soluzione!!!!

    Alla fine ho scoperto che avevo già scaricato, non ricordo quando e da dove, un esempio di utilizzo di SwingWorker associato ad un Thread.sleep, e dopo mille prove e modifiche sono riuscito ad adattarlo alla mia necessità e finalmente ho risolto!!! 

Devi accedere o registrarti per scrivere nel forum
4 risposte