tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
13
ZUGRIFFE
582
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    javama javama ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    102
    Hallo,

    ich wollte nach Button Klick in der actionPerformedMethode eine Fortschrittsanzeige mittels einer JProgressBar
    realisieren.

    in der Art:

    actionPerformed() {

    1. Fortschrittsanzeige (unbestimmte) erzeugen in Panel A
    2. Methodenaufruf, der eine gewisse Zeit benötigt
    3. Fortschrittsanzeige aus Panel A entfernen wenn Methode ausgeführt wird.
    }

    hat jemand eine Idee?
    danke im voraus
     

  2. #2
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Und wo ist jetzt das Problem?
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  3. #3
    javama javama ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    102
    wie kann man das realiesieren?
     

  4. #4
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Ich will ja nix sagen, aber ich versteh das Problem dabei nicht ... Du hast sogar die Schritte genannt, die gemacht werden müssen, das musst du einfach nur umsetzen. Willst du ein Beispiel sehen oder was?
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  5. #5
    javama javama ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    102
    mein problem ist dass erst wenn die Metohde (myMethodExecute()) ausgeführt wird , fängt dann progressbar an zu bewegen

    ich muss einen separten Thread programmieren

    hat jemand eine Idee?

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    if(arg0.getSource() == button)
    {
       if(a.size() > 0)
       {
           int erg = JOptionPane.showConfirmDialog(this, "Wollen Sie die zeilen erstellen?", "Hinweis",        JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
           if(erg == JOptionPane.YES_OPTION)
              {
                        
    progressBar.setIndeterminate(true);
       // benötigte zeit unbekannt: wie lange die Methode braucht
        myMethodExecute();                      
                        
                                            
                                          }
                }
    else
        JOptionPane.showMessageDialog(this, "Die Tabelle ist leer!");
    Geändert von javama (27.12.11 um 14:41 Uhr)
     

  6. #6
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Achso, da liegt also das Problem. Naja, man muss aber auch dazu sagen, dass niemand erahnen kann, wie weit deine Methode ist. Du wirst also in deiner Methode an bestimmten Punkten die Progressbar füttern müssen. Oder du hast eine zentral gelegene Variable, die durch die Methode gesetzt wird und ein Timer schaut in regelmäßigen Abständen nach und aktualisiert die Progressbar.
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  7. #7
    javama javama ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    102
    aber die methode liegt in einem anderen Package und wird in dieser Klasse aufgerufen! wie wird das sein?
     

  8. #8
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Ja dann kannste das vergessen ... Ich kenne aber auch nicht dein Projekt und auch nicht die Struktur, daher kann ich dazu auch nix sagen. Man könnte pfuschen, aber ich bin der letzte, der zu sowas greift. Es gibt eigentlich immer Möglichkeiten, sauber zu arbeiten.

    Wenn die eine Methode wirklich die einzige aufgerufene Methode ist, dann macht eine Progressbar auch schon eigentlich kein Sinn mehr. Da kannste im Grunde auch einfach ne Text ala Status oder sowas hinterlegen oder ne MessageBox anzeigen mit dem Inhalt "XYZ wird ausgeführt, kann ein paar Minuten dauern ...". Das Problem ist, dass wenn du an keine einzelnen Zustandswerte kommst, die Progressbar eigentlich nur 0% und 100% anzeigen kann und das ist genauso sinnvoll, wie wenn sie gar nicht vorhanden wär.
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  9. #9
    javama javama ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    102
    ja du hast recht, ich konnte schon die Methode so umändern, dass ich mein ProgressBar mitteilen kann wie weit ist die methode (das wäre dann: Determinate Progress Bars). Aber ich wollte dann nur mit Indeterminate Mode arbeiten sodass mein ProgressBar sich Hin und Her bewegt bis die methode fertig ist.
    das war mein ziel!
     

  10. #10
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Und das klappt nicht oder was?
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  11. #11
    javama javama ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    102
    Nein, wie gesagt, die methode wird erstmal ausgeführt, und erst danach beginnt progressbar non-stop sich zu bewegen
     

  12. #12
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Setzt du die Werten denn auch schon vorher? In der JavaDoc is z.B. das Beispiel:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    
    progressBar = new JProgressBar();
    ...//when the task of (initially) unknown length begins:
    progressBar.setIndeterminate(true);
    ...//do some work; get length of task...
    progressBar.setMaximum(newLength);
    progressBar.setValue(newValue);
    progressBar.setIndeterminate(false);
    Habs nicht ausprobiert. Aber wenn das bei dir erst nach dem Aufruf gesetzt wird, dann wäre das ja logisch. Die Methodenaufrufe sind nicht asynchron, sondern synchron. Es wird gewartet, bis eine aufgerufene Methode fertig ist, bis weitere Anweisungen abgearbeitet werden.

    EDIT:
    Ich Idiot, was frag ich überhaupt, der Code steht ja weiter oben xD Du gibt der ProgressBar da auch kein Futter, vermutlich kann sie deswegen auch nicht rechtzeitig was richtig darstellen.
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  13. #13
    javama javama ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    102
    das habe ich schon mal gemacht . das hilft nicht!
    wo kann ich meine Methode einsetzen?
     

  14. #14
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Ich versuch mal was nachzubasteln, mal schaun, was draus wird. Was genau macht deine Methode eigentlich?

    EDIT:
    So, habs mal nachgebastelt. Das Problem ist, dass deine GUI in der Zeit einfriert, was dazu führt, dass erst die Methode aufgerufen wird und die ProgressBar erst mit ihrer Arbeit beginnen kann, wenn die GUI wieder "läuft". Wenn du das Ganze aber in einen separaten Thread auslagerst, dann klappt das super.

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            new Thread(new Runnable() {
                                @Override
                                public void run() {
                                    progressBar.setIndeterminate(true);
                                    mySecretAction();
                                    progressBar.setIndeterminate(false);
                                }
                            }).start();
                        }
                    });
    Geändert von Akeshihiro (27.12.11 um 16:48 Uhr)
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

Ähnliche Themen

  1. jProgressBar
    Von MiRaMC im Forum Java
    Antworten: 6
    Letzter Beitrag: 17.06.08, 15:54
  2. Zeitgesteuerte JProgressBar
    Von woody100 im Forum Java
    Antworten: 5
    Letzter Beitrag: 19.10.07, 11:02
  3. Ausgabe JProgressBar
    Von DERHAARKAMM im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 12.04.07, 12:42
  4. JProgressBar Farben
    Von Lucien3000 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 01.12.05, 15:50
  5. Problem mit JProgressBar
    Von ich_Schmiddy im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 28.02.04, 12:06