Zeitgesteuerte JProgressBar

woody100

Mitglied
Hallo!

Ich habe schon danach gegoogelt und auch einiges hier im Forum gelesen, leider hat mir zu meiner Frage nichts geholfen, also etwas konkreter:
In meinem Program werden, wenn ich auf einen Button klicke, einige Daten aus einie Excel Daten gelesen und danach noch einige Berechnungen angestellt. Sobald die Berechnungen fertig sind, wird das Ergebnis in einem neuen JDialog angezeigt. Da dieser Arbeitsvorgang öfter 5-10 Sekunden dauert, möchte ich hier eine JProgressBar erstellen. Aber da hier sehr viel Code dahinter steckt und alles möchte ich wissen wie es am einfachsten wäre für diese Zeitspanne eine JProgressBar zu implementieren, da es sehr viel aufwand und eig. auch nicht genau(also Prozentuel gesehen, von den Verlauf der Arbeiten) wenn ich immer wieder selber die Prozente aktualisiere, da ich auch selber nicht genau weiss, wie viel Prozent von der Gesamtzeit, z.bsp. ein gewisser Methodenaufruf dauert!

Hoffe es kann mir hier bitte wer helfen, und hat auch mein anliegen verstanden!

Mit freundlichen Grüßen,
Harry
 
Mach doch einen neuen Thread, der solange offen ist, wie die Arbeit dauert;) in dem Thread öffnest du eine ProgressBar und setzt den Stand in einer Schleife und mit sleep(ansonsten gehts wohl zu schnell) höher. Wenn du mit deinen Abfragen fertig bist, kannst du ja noch überprüfen, ob die ProgressBar schon bei 100% angekommen ist, und wenn das so ist, dann schließt du den anderen Thread
 
Erstmal kannst du die ProgressBar doch mehrmals auf 100% laufen lassen darfs halt die Prozente nicht angeben, ist doch bei vielen Anwendungen so.

Wenn du die Progressbar in der Hauptanwendung positioniert hast wird das mit dem Thread der sie aktualisiert nicht so einfach gehen, da die Oberfläche erst nach Abarbeitung ein repaint ausführt.

Lösung: die Funktionalität muss in einem eigenem Thread ausgeführt werden sowie das erhöhen der Pbar.
 
Hallo!

Danke erst mal für eure Antworten... dut mir leid aber ich check dass immer noch nicht ganz!

also könntet ihr mir dass mal an Hand follgendem Beispiel erklären... ich will eine JProgressBar für eine Methode die 5 Fore-Schleifen durchläuft, wobei die erste 3s braucht, die 2te 5s ... aber bei einem erneuten aufruf andere Zeiten brauchen, um die for schleife durchzulaufen! Ich lagere dass ganze in einem Thread aus.. und wann und wie rufe ich jetzt nun die JProgressBar auf, damit die anzeige in % ziemlich stimmt!
public void Test()
{
for(int i = 0;i<=99;i++)
{
......
}
for(int j = 5;j<=300;j++)
{
....
}
.........
}

Wie und wo würde ich nun in dieser Methode die aktualisierung aufrufen!

Da ich für ein weiteres Problem nicht extra einen eigenen Thread aufmachen möchte, frage ich mal hier nach.. ich habe einen JDialog, wo ich mir die größe über eine Methodehole(weiß nicht mehr wie sie heißt) und dann adde ich ein bar components, buttons, fields, und eine JComboBox! Nun wird das Program auf meinem PC einwandfrei ausgeführt und angzeigt! Auf einem anderen PC wird die komilierte .jar file genauso ausgeführt, und liefert keinen fehler, nur wird die JComboBox nicht angezeigt!

Hatte vl. schon mal einer ein ähnliches Problem gehabt, oder weiss jemand an was es liegen kann, oder soll ich ihn code posten?

mfg,
und danke...
harry
 
Hallo,

ich weiß ja nicht ob es dir schon vorgeschlagen wurde. Du weißt ja nicht genau wie lange die Berechnung dauert, warum machst du es denn nicht so?

Java:
package de.tutorials.swing;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JProgressBar;

@SuppressWarnings("serial")
public class ProgressBarExample extends JFrame {
	
	public ProgressBarExample() {

		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setLocationRelativeTo(null);
		
		JProgressBar bar = new JProgressBar();
		
		bar.setIndeterminate(true);
		
		add(bar, BorderLayout.CENTER);
		
		pack();

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new ProgressBarExample().setVisible(true);
	}

}


MFG

zEriX
 
Zurück