Repaint bei JProgressBar

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich habe auf einem JFrame eine JProgressBar. Die Klasse hat eine Funktion import die Daten aus einer Textdatei einließt und beim durchlauf die ProgressBar voranbringen soll. Etwa so:

Code:
public class myFrame extends JFrame(){

private JProgressBar jpb;

public myFrame(){
...
}

private void import(){
schleife{
  ...
  jpb.setValue(...);
  this.repaint();
}
}

}

Das Problem ist wohl, das der Datenimport in der Schleife das System so auslastet das der JFrame nicht neu gezeichnet wird und damit die JProgressBar nix bringt. Muss ich den Import in einen Thread auslagern oder gibt es noch andere Möglichkeiten?
 
Long Running Operations müssen immer in einem Thread laufen, weil sie sonst den AWT Event Dispatcher Thread blockieren.
In diesem Thread läuft deine GUI. Er triggert unter anderem das Event Handling (Maus, Tastatur,...) und das Zeichnen.
Startest du nun eine long running operation in diesem Thread, dann kann erst wieder gezeichnet werden, wenn die long running operation die Kontrolle an den Dispatcher zurück gibt.
Also merke: eine JProgressBar kann es niemals ohne einen passenden Worker Thread geben.
Klar was du ändern musst?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben