Zum Inhalt springen

Wie kann ich hier eine JProgressBar einsetzen?


barbara83

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...