Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Wie kann ich hier eine JProgressBar einsetzen?

Empfohlene Antworten

Veröffentlicht

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

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

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.