R
roli_7
Gast
Hallo allerseits.
Ich möchte während des Ladens von Daten (Dauer ca. 10 Sekunden) ein ProgressBar anzeigen. Leider bringe ich dies nicht fertig. Die Anzeige wird nicht aktualisiert. Obwohl ich einiges probiert habe und den Code inzwischen "massakriert", funktioniert es immer noch nicht.
So sieht meine ProgressBar-Klasse aus:
Das ProgressBar soll kurz for dem Start der Schleife, in der die Daten geladen werden, erzeugt werden. In der Schleife wird der aktuelle Zeilenindex immer aktualisiert, da er aus dem ProgressBar-Thread abgefragt werden soll (die auskommentierte Schleife). Das Erzeugen sollte etwa wie folgt aussehen:
Der JFrame wird angezeigt und ich kann ihn beliebig verschieben: es wird auch während des Ladens von Daten sauber gezeichnet und man merkt absolut nichts. Einzig wird das ProgressBar nicht gezeichnet.
Ich habe es direkt in der Methode main getestet (ohne dass die Daten geladen werden). Und, in diesem Fall funktioniert es korrekt.
Ich wäre froh, wenn mir jemand helfen könnte. Denn, im Moment komme ich einfach nicht weiter.
Danke für jeden Tipp.
Ich möchte während des Ladens von Daten (Dauer ca. 10 Sekunden) ein ProgressBar anzeigen. Leider bringe ich dies nicht fertig. Die Anzeige wird nicht aktualisiert. Obwohl ich einiges probiert habe und den Code inzwischen "massakriert", funktioniert es immer noch nicht.
So sieht meine ProgressBar-Klasse aus:
Code:
// imports ...
public class Progressbar extends JFrame implements Runnable
{
/** Comment for <code>serialVersionUID</code> */
private static final long serialVersionUID = 1L;
private JProgressBar pBar;
private DataLoader dLoader;
public Progressbar(DataLoader dLoader)
{
this.dLoader = dLoader;
createProgressbar();
}
private void createProgressbar()
{
setLayout(null);
setSize(300, 80);
setTitle("Laden von Daten");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setResizable(false);
setLocationByPlatform(true);
pBar = new JProgressBar();
pBar.setSize(new Dimension(260, 20));
//pBar.setMaximum(dLoader.getNumberOfRows());
pBar.setMaximum(1700000); // zum Testen
pBar.setLocation(20, 20);
pBar.setVisible(true);
/* Dem Frame hinzufügen */
add(pBar);
setVisible(true);
}
public void run()
{
int i = 0;
// while((i = dLoader.getCurrentRowIndex()) < dLoader.getNumberOfRows()-1)
// {
// pBar.setValue(i);
// pBar.repaint();
// this.repaint();
// }
while (i < pBar.getMaximum())
{
pBar.setValue(++i);
pBar.repaint();
}
dispose();
}
}
Das ProgressBar soll kurz for dem Start der Schleife, in der die Daten geladen werden, erzeugt werden. In der Schleife wird der aktuelle Zeilenindex immer aktualisiert, da er aus dem ProgressBar-Thread abgefragt werden soll (die auskommentierte Schleife). Das Erzeugen sollte etwa wie folgt aussehen:
Code:
SwingUtilities.invokeLater(new Progressbar(referenzAufDatenLoader));
Der JFrame wird angezeigt und ich kann ihn beliebig verschieben: es wird auch während des Ladens von Daten sauber gezeichnet und man merkt absolut nichts. Einzig wird das ProgressBar nicht gezeichnet.
Ich habe es direkt in der Methode main getestet (ohne dass die Daten geladen werden). Und, in diesem Fall funktioniert es korrekt.
Ich wäre froh, wenn mir jemand helfen könnte. Denn, im Moment komme ich einfach nicht weiter.
Danke für jeden Tipp.