Hallo,
ich programmiere mit Apache Netbeans unter Windows 10 und habe mir zum Testen ein kleines Programm erstellt. Die GUI besteht lediglich aus einem Button und einer TextArea.
Wenn der Button angeklickt wird, soll ein Verzeichnis rekursiv ausgelesen und die Dateien anschließend in ein anderes Verzeichnis kopiert werden. Das klappt auch alles.
Damit der User sieht, was gerade passiert möchte ich nach jeder kopierten Datei in der TextArea eine Meldung ausgeben, welche Datei gerade kopiert wird.
Das ganze läuft in einer Schleife. Diese durchläuft ein Array welches zuvor mit den Dateinamen gefüllt wurde.
Mein Gedanke war wie folgt:
- In die Schleife einsteigen und dann die erste Datei kopieren.
- Als nächstes die Ausgabe in der TextArea, welche Datei gerade kopiert wurde
- und dann zur nächsten Datei.
Nach meinem Verständnis sollte das eigentlich kein Problem sein. Das Programm geht aber her und kopiert erst alle Dateien und gibt erst dann die Meldungen aus.
Nach meinen bisherigen Recherchen im Internet ist die GUI beim Kopieren blockiert. Die Quellcodezeile für die Ausgabe in TextArea wird zwar ausgeführt aber in der GUI nicht angezeigt. Erst wenn alle Dateien kopiert sind ist die GUI wieder "frei" und er führt dann nachträglich noch alle Ausgabeanweisungen aus.
Ich habe deshalb die eigentliche Kopieraktion in einen Thread ausgelagert. Das Ganze sieht dann etwa so aus:
Leider ändert sich am Verhalten meines Programms überhaupt nichts.
Hat von Euch schon mal jemand eine solche Funktionalität in sein Programm eingebaut und wenn ja, wie wurde es umgesetzt.
Mir würde es schon genügen, wenn ich hier die Codeschnipsel nur für mein Problem bekomme. Ich muss nicht den Code für die ganze Anwendung sehen.
Wäre Euch für Hilfe echt dankbar.
Gruß Ralf
ich programmiere mit Apache Netbeans unter Windows 10 und habe mir zum Testen ein kleines Programm erstellt. Die GUI besteht lediglich aus einem Button und einer TextArea.
Wenn der Button angeklickt wird, soll ein Verzeichnis rekursiv ausgelesen und die Dateien anschließend in ein anderes Verzeichnis kopiert werden. Das klappt auch alles.
Damit der User sieht, was gerade passiert möchte ich nach jeder kopierten Datei in der TextArea eine Meldung ausgeben, welche Datei gerade kopiert wird.
Das ganze läuft in einer Schleife. Diese durchläuft ein Array welches zuvor mit den Dateinamen gefüllt wurde.
Mein Gedanke war wie folgt:
Java:
[/B]
for(int i = 0; i < files.length; i++){
kopiere Datei[i];
schreibe die Meldung in die TextArea;
}
[B]
- Als nächstes die Ausgabe in der TextArea, welche Datei gerade kopiert wurde
- und dann zur nächsten Datei.
Nach meinem Verständnis sollte das eigentlich kein Problem sein. Das Programm geht aber her und kopiert erst alle Dateien und gibt erst dann die Meldungen aus.
Nach meinen bisherigen Recherchen im Internet ist die GUI beim Kopieren blockiert. Die Quellcodezeile für die Ausgabe in TextArea wird zwar ausgeführt aber in der GUI nicht angezeigt. Erst wenn alle Dateien kopiert sind ist die GUI wieder "frei" und er führt dann nachträglich noch alle Ausgabeanweisungen aus.
Ich habe deshalb die eigentliche Kopieraktion in einen Thread ausgelagert. Das Ganze sieht dann etwa so aus:
Java:
[/B]
for(int i = 0; i < files.length; i++){
Thread erstellen
Thread starten mit .start()
mit .join() warten bis die erste übergebene Datei im Thread kopiert wurde
dann die Meldung in die TextArea schreiben;
}
[B]
Hat von Euch schon mal jemand eine solche Funktionalität in sein Programm eingebaut und wenn ja, wie wurde es umgesetzt.
Mir würde es schon genügen, wenn ich hier die Codeschnipsel nur für mein Problem bekomme. Ich muss nicht den Code für die ganze Anwendung sehen.
Wäre Euch für Hilfe echt dankbar.
Gruß Ralf