[JAVA] ProgressBar langsam füllen

MCStreetguy

Stammuser
Hallo liebe Community :)

Ich möchte als Test eine GUI mit ProgressBar erstellen und die ProgressBar langsam füllen :)
Also ich habe den Code fertig geschrieben, jedoch funktioniert das Füllen nicht so wie ich es mir vorgestellt habe :/ Der gesamte Quelltext ist etwas zu lang deshalb hier nur kurz der Code zum Füllen der ProgressBar:
Code:
for(int i=0; i<progressBar.getMaximum(); i++) {
	progressBar.setValue(i);
	try {Thread.sleep(100);} catch(InterruptedException e) {}
	progressBar.repaint();
}

Das resultiert allerdings immer darin, dass sich die ganze Zeit nichts tut und am Ende die Bar plötzlich komplett gefüllt ist :/
Könnt ihr mir eventuell weiterhelfen? :/ also die ProgressBar soll sich langsam und kontinuierlich füllen ohne das der ganze Thread einfriert :)

Danke schonmal im Vorraus,
euer MCStreetguy
 

Tsjuder

Stammuser
Mal so ins Blaue geraten: Was macht denn der GUI Thread währenddessen? Wenn dieser irgendwas langes berechnet, dann wird vermutlich das Repaint erst abgearbeitet nach dem der GUI Thread wieder frei ist.

Also an Quellcode wäre wirklich noch wichtig wie es zu diesem Event kommt, dass die ProgressBar gefüllt wird.
 

astraL1s

New member
Hallo liebe Community :)

Ich möchte als Test eine GUI mit ProgressBar erstellen und die ProgressBar langsam füllen :)
Also ich habe den Code fertig geschrieben, jedoch funktioniert das Füllen nicht so wie ich es mir vorgestellt habe :/ Der gesamte Quelltext ist etwas zu lang deshalb hier nur kurz der Code zum Füllen der ProgressBar:
Code:
for(int i=0; i<progressBar.getMaximum(); i++) {
	progressBar.setValue(i);
	try {Thread.sleep(100);} catch(InterruptedException e) {}
	progressBar.repaint();
}

Das resultiert allerdings immer darin, dass sich die ganze Zeit nichts tut und am Ende die Bar plötzlich komplett gefüllt ist :/
Könnt ihr mir eventuell weiterhelfen? :/ also die ProgressBar soll sich langsam und kontinuierlich füllen ohne das der ganze Thread einfriert :)

Danke schonmal im Vorraus,
euer MCStreetguy

Solltest einen seperaten Thread für deine ProgressBar machen

Weiss nicht genau wie das bei Java ist, C# Code:
Code:
//pseudo
Thread t;

t = new Thread(progBar);
t.Start();

// progBar func
void progBar()
{
	for( ... )
	{
		// code
	}
	
	t.Abort();
}

// edit: du musst natürlich im thread die steuerelemente invoken um sie benutzen zu können
 
Zuletzt bearbeitet:
Oben