Scrivere valori in jTextArea

m.pittini

Utente Attivo
26 Feb 2009
232
6
0
Ho questo problema:

-Ho un ciclo for che scandisce una lista che contiene degli oggetti che rappresentano dei punti

-Ho una jTextArea su cui voglio scrivere i valori con il metodo append().

la lista e la jtextArea sono su 2 classi diverse, il ciclo si avvia premendo un bottone che si trova nella classe della jTextArea.

Io vorrei che i valori vengano scritti passo passo durante il ciclo, invece vengono scritti tutti contemporaneamente quando il ciclo è finito!

posto il codice:

Codice:
       for (int i = 0; i < lista.size() - 1; i++) {

            //Questo è il punto che dà problemi!!!!!!!
            disegno.jTextArea1.append(lista.get(i).getStringaPunto4() + "\n");

            try {//routine di ritardo
                Thread.sleep(100);
            } catch (Exception e) {
            }
        }
 
Ciao m.pittini, allora dovresti gestire l' evento del pulsante affidando l' esecuzione del for ad un Thread in una semplice inner class. Ti posto il codice :
Codice:
private class MyThread implements Runnable {
        
public void run() {
            for(int i = 0; i < 100; i++) {
               for (int i = 0; i < lista.size() - 1; i++) {

            //Questo è il punto che dà problemi!!!!!!!
            disegno.jTextArea1.append(lista.get(i).getStringaPunto4() +"\n");

            try {//routine di ritardo
                Thread.sleep(100);
            } catch (Exception e) {
            }
        }
            } 
        }
        
    }
Nel metodo dove gestisci l' azione del pulsante invece aggiungi :
new Thread(new MyThread()).start();

In questo modo quando premi il pulsante l' interfaccia non si blocca nell' attesa della fine del for e il repaint dell' interfaccia grafica avviene senza problemi rispettando lo sleep del thread nel for.

Fammi sapere

Ciao
 
Ultima modifica:

Discussioni simili