ProgressBar für Kopiervorgang erstellen

Pro-Grammer

Grünschnabel
Hallo zusammen,

ich möchte gerne eine ProgressBar in mein Java-Programm einbinden. diese soll während des ganzen Kopiervorgangs aktiviert sein. Da ich die Dauer nicht kenne, würde ich es gerne mit
Code:
progress.setIndeterminate(true);
versuchen. Allerdings bleibt der Balken während des Kopiervorgangs einfach stehen.

Vereinfacht sieht das Ganz so aus:
Code:
progress.setIndeterminate(true);
x.copyDir(quelle, ziel);
progress.setIndeterminate(false);

Bitte macht es so einfach wie möglich, ich bin Anfänger. Wo genau muss ich was einfügen?

Vielen Dank!
 
Hallo,
danke für den Link. Hatte mich dort schon umgeguckt, hat mich aber leider nicht weiter gebracht. Muss ich den Wert auch bei "setIndeterminate" selbst setzen? Dort fährt der Balken doch einfach nur hin und her, oder?

Also bei sieht es so aus:
Code:
private void backupActionPerformed(java.awt.event.ActionEvent evt) {
progress.setIndeterminate(true);
x.copyDir(quelle, ziel);
progress.setIndeterminate(false);
}

Das Ganze ist jetzt vereinfach dargestellt ohne try and catch etc. Was muss ich denn wo noch hinzufügen?
 
Zuletzt bearbeitet:
Ah, ich habe vorhin nicht ganz richtig hingeguckt. Sorry...
Du hast natürlich recht, im Indeterminate- Modus sollte die Progressbar koninuierlich weiter gezeichnet werden.
Es sei denn, dein Kopierfunktion blockiert dies, was ich vermute. Mach dich doch bitte mal über das Thema Threads in Java schlau. Über Google findet sich da mehr als genug. Und dann starte deine Kopierfunktion mal in einem separatem Thread..

Grüße!
 
Hallo,

am besten verwendet man hier einen SwingWorker. Beispielsweise so:
Java:
private void backupActionPerformed(java.awt.event.ActionEvent evt) {
	SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() {
		@Override
		protected Void doInBackground() throws Exception {
			progress.setIndeterminate(true);
			x.copyDir(quelle, ziel);
			progress.setIndeterminate(false);
			return null;						
		}
	};
	worker.execute();
}

Grüße,
Matthias
 
Vielen Dank an euch!

Mit dem Swingworker klappt es hervorragend! Habe nur noch eine Frage zum Verständis: Wie funktioniert dieser Swingworker, warum funktioniert es ohne nicht?

Noch einmal Danke für die tolle Hilfe!
 
Zurück