Domanda

Io non sono uno sviluppatore Java, ma ho bisogno di scrivere un piccolo applet caricare il file via ftp (In realtà, io sono uno sviluppatore web). Tutto funziona bene, tranne che per il modo in cui vengono visualizzati i messaggi di feedback. Mi spiego con un esempio:

Se ho scritto sometingh così, all'interno di un metodo (controllato da un evento click)

//....
myJpanel.setText("Connecting to remote server");

//actually, it's surrounded by try-catch statement
myFtpObject.connect(); //this is taken from a third part package 
myJpanel.setText("Connected")

Quando provo a eseguire questo codice la connessione è impostato (dopo che i file di collegamento a caricare senza alcun problema), ma all'interno del JPanel myJpanel I immeditaly leggere "Connected" (dei lavori finanziari ci vogliono parecchi secondi di connettersi) e non ho mai visto il "Connessione al server remoto" stringa.

Sembra a me come il metodo setText JPanel vengono accodati in qualche modo.
Come faccio a visualizzare i messaggi in tempo reale?

(ho cercato di fare System.out.println per il test e ha funzionato grande!)
Grazie

È stato utile?

Soluzione

  

Se ho scritto sometingh del genere all'interno di un metodo (controllato da un evento click)

Codice eseguito in un evento ascoltatore eseguito sul EDT. Il problema è che il compito a lungo in esecuzione sta bloccando lo Swing EDT. Così l'interfaccia grafica non ha la possibilità di ridisegnare se stessa.

Leggi la sezione dal tutorial Swing on concorrenza maggiori informazioni e per una soluzione. La soluzione di base è quella di creare un thread separato per l'attività lungo in esecuzione.

Questo è anche il motivo per System.out.println (..) funziona, perché si esegue su un thread diverso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top