Frage

ich bin kein Java-Entwickler, aber ich brauche ein kleines Applet zu schreiben Datei per FTP hochladen (Tatsächlich, ich bin ein Web-Entwickler). Alles funktioniert gut, mit Ausnahme der Art und Weise, dass das Feedback-Meldungen angezeigt werden. Lassen Sie mich mit einem Beispiel erklären:

wenn ich sometingh wie das, in einem Verfahren (gesteuert durch ein Click-Ereignis)

schreibe
//....
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")

Wenn ich versuche, diesen Code ausführen, um die Verbindung festgelegt ist (nach, dass die Verbindung I-Upload-Dateien ohne Probleme), aber innerhalb der JPanel myJpanel ich dann unmittelbar gelesen „verbunden“ (altought dauert es einige Sekunden zu verbinden) und ich nie die „Verbindung zu Remote-Server“ string.

siehe

Es klingt für mich wie das JPanel setText Verfahren in irgendeiner Weise gepuffert wird.
Wie kann ich Anzeigen Nachrichten in Echtzeit?

(Ich habe versucht, System.out.printin zu tun für die Prüfung und es funktionierte großartig!)
Dank

War es hilfreich?

Lösung

  

wenn ich sometingh wie das in einem Verfahren (gesteuert durch ein Click-Ereignis)

schreibe

ausgeführt-Code in einer Ereignis-Listener ausführt, auf dem EDT. Das Problem ist, dass die lange laufende Aufgabe Swing EDT blockiert. So ist die GUI wird nie eine Chance, sich neu zu streichen.

Lesen Sie den Abschnitt aus den Swing-Tutorial auf Concurrency weitere Informationen und für eine Lösung. Die basische Lösung ist über einen separaten Thread für die lange laufende Aufgabe zu erstellen.

Das ist auch, warum System.out.println (..) funktioniert, weil es auf einem anderen Thread ausgeführt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top