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
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
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
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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden