barbara83 Geschrieben 28. Juli 2008 Geschrieben 28. Juli 2008 Hallo zusammen ich versuche seit mehreren Stunden erfolglos folgendes Problem zu lösen: Mit Hilfe einer Gui-Oberfläche stelle ich diverse Parameter für ein Objekt ein und übergebe dieses Objekt anschliessend einer Klasse Generator. Der Generator erstellt mit Hilfe des übergebenen Objekts und verschiedenen Templates (.txt) einen sehr langen String (kann bis zu einer Mio Zeilen enthalten), welcher anschliessend in ein .txt Dokument geschrieben wird. Dies geschieht mit Hilfe von verschiedenen Schleifen, welche über die verschiedenen ArrayListen des übergebenen Objekts laufen. Nun würde ich gerne dem Benutzer / der Benutzerin den Status der äussersten Schleife (entspricht dem ungefähren Fortschritt) mit einer JProgressBar ausgeben. Allerdings weiss ich nicht genau wie, bei mir friert die ProgressBar während dem Prozess immer ein (gar kein Fortschrittsbalken zu sehen) und es erscheint dann ca. 90% sobald der Prozess abgeschlossen ist. Hier eine vereinfachte Darstellung des Problems class GUI { .... // beim Klick auf irgendeinen Button String code = Generator.generiereCode(meinObjekt); // Schreibe dann den String code in irgendeine Datei ..... } class Generator { public static String generiereCode(MeineObjekt meinObjekt) { String code = ""; for(int i = 0; meinObjekt.irgendEineListe.size(); i++) { //hier werden viele weitere "Untermethoden" aufgerufen, so dass der // Durchlauf einer Iteration relativ viel Zeit (~z.b. 1minute) beanspruchen kann //Hier müsste also die ProgressBar dann bei jeder Erhöhung von i angepasst werden } return code; } } Habe selber keine grosse Erfahrung mit Multithreading und propertyChangeListener etc... Ich wäre sehr dankbar, wenn mir jemand helfen könnte. Viele Grüsse Barbara Zitieren
Youser Geschrieben 28. Juli 2008 Geschrieben 28. Juli 2008 Ich bin zwar nur Java-Noob, aber für mich sieht das so aus, als lädst du ja den ganzen Millionenzeilenlangen String in den RAM, indem du ihn in String code gibst. Ist das sinnvoll. Wärs nicht wesentlich besser den Output vom Generator direkt in die Ausgabedatei zu schreiben ? Die Frage nur für mein persönliches Verständnis. Mit der Progressbar kenn ich mich leider nich aus Zitieren
Johnny90 Geschrieben 28. Juli 2008 Geschrieben 28. Juli 2008 Servus Schau dir mal das JProgressBar Demo an wenn du das schon hast, tuts mir leid, hab leider nicht allzu viel zeit gerade. Grüße Johnny Zitieren
barbara83 Geschrieben 28. Juli 2008 Autor Geschrieben 28. Juli 2008 hallo zusammen, danke für die antworten. ich habe eine lösung gefunden, indem ich den langen task in einem eigenen thread ablaufen lasse. so funktioniert das updaten der progressbar. in der tat ist es noch ein schwachpunkt meines tools, dass der ganze string in den zwischenspeicher geladen wird. muss ich dringend noch ändern. welche klasse bietet sich hier am ehesten an? PrintWriter? Und dann dort die Methode append(str)? grüsse Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.