Anzeige updatet sich erst am Ende des Programms

mario87b

Aktives Mitglied
Hallo.

Ich habe eine kleine Anwendung, die mir alle Dateien aus allen Unterverzeichnissen eines angegebenen Verzeichnisse auflisten soll.

Die Anwendung funktioniert. Ich habe ein kleines GUI dazu erstellen lassen, vom NetBeans 7, funktioniert auch, ABER

wenn ich das Programm auf ein richtig volles Verzeichnis loslasse, dann wird die Liste auf dem GUI, in der ich die gefundenen Dateinamen anzeigen lasse, erst am Ende des Programms gefüllt.

D.h. ich kucke 2 Minuten auf ein Fenster auf dem erst am Ende alle Dateien durchrasen...

Was mach ich falsch?

Danke.
 
längerfristige Aktionen müssen in einem Thread nebenläufig ausgeführt werden,
solange der GUI-Thread einen ActionListener bearbeiten muss, kann er nichts anderes wie Neuzeichnen oder auf Eingabe reagieren machen

Java Practices -> Swing threads
 
ok, danke, ich dachte mir fast schon sowas, aber das ich bei java mit threads arbeiten MUSS, wußte ich nicht.

in ANSI c gabs früher mal die funktion processsystemevents(), dadurch wurden dann solche dinge wie GUI geupdated.

danke.
 
ok, danke, ich dachte mir fast schon sowas, aber das ich bei java mit threads arbeiten MUSS, wußte ich nicht.
Stichwort SwingWorker

in ANSI c gabs früher mal die funktion processsystemevents(), dadurch wurden dann solche dinge wie GUI geupdated.
danke.

Das erledigt der EDT (Event Dispatch Thread) automatisch. Da ActionListener ect. allerdings aus diesem aufgerufen werden, blockiert dieser solange der Listener abgearbeitet wird. Du kannnst zwar ein revalidate forcen, das wird aber dennoch erst später abgearbeitet.
 

Zurück
Oben