Newsgroup: it.comp.java
Titolo: RISOLVETE QUESTO!!!!

Cacchio, sono l'incapace del problema del ritardo....insomma, è impossibile
risolverlo.....ora lo spiego meglio.
Mettiamo di avere una finestra con una semplice TextArea, bella bianca e
funzionante.
Mettiamo di voler stamapare TRAMITE
Frame . jTextAreaPincoPallino . setText(String)      5 fottute righe di
testo. (5 come 50000)
Voglio però stampare una riga alla volta con in mezzo un ritardo di 3000
millisecondi o comunque con un ritardo in maniera tale che l'utente finale
si accorga della visualizzazione delle 5 righe in maniera ritardata (insomma
le vede
apparire man mano una dietro l'altra). COME
FARE!!!!!!!!!!!??????????????????????????
La persona normale esegue un setText in un ciclo for con all'interno una
istruzione di ritardo come ad esempio Thread.sleep oppure nostrana del tipo
2 cicli for annidati da 1 a 10000....NIENTE NIENTE NIENTE!!!!!!!!
Se provate il computer accumula il ritardo riga per riga, aspettate n*tempo
di ritardo e poi sputa fuori tutte le righe insieme. Come se ci fosse un
buffer che memorizza le righe e le sputa fuori solo alla fine dell'evento
"stampastecazzodirighe"!!
Se ci riuscite.....siete bravi :-) No va beh, chi cavolo sa capirci qualcosa
lo dica!!!!
Grazie!
P.S: altrimenti come cavolo faccio a visualizzare un testo temporizato in
una finestra??????? "SU" cosa devo scrivere il testo???? TextPanel?
TextAreaSUPER? TextdiCaz? aiutoooooooooooooo

 
La persona che sa come funzionano le interfacce grafiche event drivern si 
crea un Timer che nella funzione run() aggiunge le righe quando viene 
innescata.
Oppure fa un thread che fa la stessa cosa, ma evita di bloccare la routine 
che hai fatto tu la quale (tiro a indovinare) sara' lanciata da un evento 
scatenato dalla grafica.



il problema da te riscontrato potrebbe dipendere dal fatto che la grafica in java e' asincrona
ovvero c'e' un thread che accoda le richieste di disegno e ogni tanto le soddisfa 
detto questo il motivo potrebbe essere un altro
se riesco scrivo un esempio domani
ciao_O
_______________________________________
jame 4.0d is available! 
http://jame.sourceforge.net
_______________________________________
http://digilander.iol.it/schiele

 scatenato dalla grafica.
Il problma nuovo è che io non sono la persona che sa come funzionino le
interf. grafiche, inoltre non ho capito un cavolo di quello che hai scritto
anche se so cosa è più o meno un Thread e terzo ho il bisogno estremo che
qualcuno mi risolva sto problema, ma forse dovrò rinunciare a sti cazzo di
tre punti in più.....va beh comunque Java ne ha di lati negativi.....per
esempio un altro problema che non ho risolto ma che però ho saltato è come
cavolo faccio a ricevere in input un intero da un TextField?????????????????
IMPOSSIBILE........ahhhhhhh bello Java, che per avere un intero devi fare
una conversione STRINGA-INT!!!!!!!!!!!!!

una conversione STRINGA-INT!!!!!!!!!!!!!
non esagerare
try
{
	int i = Integer.parseInt(textfield.getText());
}
catch (NumberFormatException e)
{
}
la conversione stringa int non puoi eliminarla
qualunque sia il linguaggio la conversione c'e' sempre 
(se in input hai una stringa)
estendi la classe textfield, falla diventare un integerfield
public class IntegerField extends TextField
{
	...bla bla bla...	
	public int getInteger()
	{
		try
		{
			return (Integer.parseInt(getText()));
		}
		catch (NumberFormatException e)
		{
			return (0);
		}
	}
}
ciao_O
_______________________________________
jame 4.0e is available! 


 wrote:

ecco l'esempio
import java.awt.event.*;
import java.awt.*;
public class Demo extends Frame
{
        private TextArea textarea;
        private Thread thread;
        private int time = 10;        
        public Demo()
        {
                textarea = new TextArea("countdown\n",10,20);
                add(textarea);
 
                pack();
 
                setSize(600,400);
                setTitle("Demo");                
 
                show();
 
                addWindowListener(new WindowAdapter(){
                        public void windowClosing(WindowEvent e)
                        {
                                System.exit(0);
                        }
                });
 
                thread = new timerThread();
 
                thread.start();
        }
 
        public static void main(String args[])
        {
                new Demo();
        }
 
        private class timerThread extends Thread
        {
                private final static int delay = 1000;
                public timerThread()
                {                     
                }
 
                public void run()
                {
                        try
                        {
                                while (!isInterrupted() && (time > 0))
                                {
	                        	textarea.append(time + " secondi\n");
 
                                        time--;
 
                                        sleep(delay);
                                }
                        }
                        catch (InterruptedException e)
                        {
                        }
 
                        textarea.append("boooom!!!\n");


 avere un intero devi fare una conversione STRINGA-INT!!!!!!!!!!!!!
L'unico lato negativo e' che non lo hai studiato abbastanza.

WOW!!!! Grazie!!!!!!!!! Funziona.

 L'unico lato negativo e' che non lo hai studiato abbastanza.
hai ragione..... :-)