ERLEDIGT
JA
JA
ANTWORTEN
13
13
ZUGRIFFE
582
582
EMPFEHLEN
-
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
-
27.12.11 10:21 #2
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 ;)
-
wie kann man das realiesieren?
-
27.12.11 12:38 #4
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 ;)
-
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)
-
27.12.11 15:27 #6
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 ;)
-
aber die methode liegt in einem anderen Package und wird in dieser Klasse aufgerufen! wie wird das sein?
-
27.12.11 15:38 #8
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 ;)
-
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!
-
27.12.11 15:54 #10
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 ;)
-
Nein, wie gesagt, die methode wird erstmal ausgeführt, und erst danach beginnt progressbar non-stop sich zu bewegen
-
27.12.11 16:09 #12
Setzt du die Werten denn auch schon vorher? In der JavaDoc is z.B. das Beispiel:
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.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);
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 ;)
-
das habe ich schon mal gemacht . das hilft nicht!
wo kann ich meine Methode einsetzen?
-
27.12.11 16:28 #14
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
-
jProgressBar
Von MiRaMC im Forum JavaAntworten: 6Letzter Beitrag: 17.06.08, 15:54 -
Zeitgesteuerte JProgressBar
Von woody100 im Forum JavaAntworten: 5Letzter Beitrag: 19.10.07, 11:02 -
Ausgabe JProgressBar
Von DERHAARKAMM im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 3Letzter Beitrag: 12.04.07, 12:42 -
JProgressBar Farben
Von Lucien3000 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 01.12.05, 15:50 -
Problem mit JProgressBar
Von ich_Schmiddy im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 28.02.04, 12:06





Zitieren
Login





