JProgressBar

Status
Nicht offen für weitere Antworten.

hanso

Aktives Mitglied
Ich versuche während eine While-Schleife ausgeführt wird den Status dieser Schleife in einer JProgressBar anzuzeigen. Wie muss ich das mit den Thread's machen dass die JProgressBar aktualisiert wird? Ich muss ja, wenn ich zwei Threads mache, einen Wert austauschen um den Status festzustellen. Oder?
 
äääh... kanns sein dass du dasalles viel zu kompilziert machen willst, oder geht es be idir nicht anders?

Code:
JProgressBar pb = new JProgressBar(0, 100);
...
int var = 0;
while(var < 100) {
// tu was
var++;
pb.setValue(var)
}
 
Geht leider nicht, wenn ich das so mache dann bleibt die Anzeige zuerst auf Null und wenn alle Lagerorte schon erstellt sind ist sie plötzlich auf 100%. Ich hab vorher gelesen dass man dazu einen Thread machen muss und es dann funktioniert nur hab ich keine Ahnung wie man diesen Thread oder die evt. 2 Threads erstellt?????
 
also folgendes geht bei mir ohne probleme:

Code:
		JFrame f = new JFrame("blubb");
		f.setSize(200,200);
		f.setLocation(200,200);
		JProgressBar pb = new JProgressBar(0, 100);
		f.add(pb);
		f.setVisible(true);
		int i = 0;
		while(i < 100) {
			i++;
			pb.setValue(i);
			try {
				Thread.sleep(100);
			} catch(Exception ex) { }
		}

du musst darauf achten dass das fenster visible und die progessBar geaddet wird bevor die schleife anfängt.
 
ich denke eher das problem ist, dass es eine zweite While Schleife gibt die irgendwas macht. damit sich diese while schleife und die Anzeige-While-Schleife der Progressbar nicht gegenseitig ausschalten musst du die Progressbar in einen anderen Thread laufen lassn !
 
Aber wenn ich die ProgressBar in einem anderen Thread laufen lasse muss ich sie ja immer aktualisieren? Wie kann ich der ProgressBar dann den aktuellen Wert den Sie anzeigen muss, aus der While-Schleife , zuweisen???
Code:
Thread ProgressThread = new Thread(new Runnable() {
            public void run(){
                JProgressBar jProgressBar1 = new JProgressBar();
                add(jProgressBar1);
                jProgressBar1.setBounds(70, 220, 300, 20);
                    
            }
});

Die While-Schleife schreibt einträge in eine MySQL_Datenbank.
 
In dem Arbeitsthread lässt du einen Zähler mitlaufen, den du von außen abfragen kannst. Außen benutzt du einen Java-Timer, der z.B. alle 50 msec (=20 Male die Sekunde) diesen Wert ausliest und damit die Progressbar updatet. Ist auch wesentlich ressourcenschonender als eine Endlosschleife zu nutzen...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben