JProgressbar probleme

javama

Erfahrenes Mitglied
Nein, wie gesagt, die methode wird erstmal ausgeführt, und erst danach beginnt progressbar non-stop sich zu bewegen
 

Akeshihiro

Erfahrenes Mitglied
Setzt du die Werten denn auch schon vorher? In der JavaDoc is z.B. das Beispiel:
Java:
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.
 

Akeshihiro

Erfahrenes Mitglied
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.

Java:
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();
					}
				});
 
Zuletzt bearbeitet: