schuetzejanett
Erfahrenes Mitglied
Hallo,
ich wollte in meiner gui (login dialog) bei Klick auf den ok button testen ob der name in der datenbank vorkommt , und dann einige daten abrufen die ic später in meinem programm benötige, da diese abfragen einige zeit benötigen, möchte ich eine progressbar sichtbar machen und darüber einen statustext der sagt was aktuell passiert, also z.b. namen werde geprüft oder daten werden geladen.
Dafür haeb ich mit asyncexec einen thread gestartet in dem die progressbar sichtbar gemacht, der statustext geändert und die abfragen ablaufen. :?
Da ich noch nicht alle a3 bfragen fertig habe und mein chef aber etwas sehen will, habe ich erstmal 2 testfunktionen (fakkultätberechnung - soll Rechenzeit simulieren) eingefügt.
Beimablauf des threads wird die statusleiste auch sichtbar und ändert den text, die progressbar(indeterminate) aber wird zwar sichtbar, ändert sich aber nur nach ablauf einer abfrage. und auch sonst ist die gui blockiert.
was muss ich anders machen, damit die gui nicht blockiert ist und meine progressbar die ganze zeit läuft?
Hier mein code
ich wollte in meiner gui (login dialog) bei Klick auf den ok button testen ob der name in der datenbank vorkommt , und dann einige daten abrufen die ic später in meinem programm benötige, da diese abfragen einige zeit benötigen, möchte ich eine progressbar sichtbar machen und darüber einen statustext der sagt was aktuell passiert, also z.b. namen werde geprüft oder daten werden geladen.
Dafür haeb ich mit asyncexec einen thread gestartet in dem die progressbar sichtbar gemacht, der statustext geändert und die abfragen ablaufen. :?
Da ich noch nicht alle a3 bfragen fertig habe und mein chef aber etwas sehen will, habe ich erstmal 2 testfunktionen (fakkultätberechnung - soll Rechenzeit simulieren) eingefügt.
Beimablauf des threads wird die statusleiste auch sichtbar und ändert den text, die progressbar(indeterminate) aber wird zwar sichtbar, ändert sich aber nur nach ablauf einer abfrage. und auch sonst ist die gui blockiert.
was muss ich anders machen, damit die gui nicht blockiert ist und meine progressbar die ganze zeit läuft?
Hier mein code
Code:
private boolean loadDetails()
{
labelState.setText("name und Passwort werden geprüft");
Display.getDefault().asyncExec(new Runnable() {
public void run() {
progressBar.setVisible(true);
progressBar.update();
long fakultaet = 1;
for (int i=1; i<=10000; i++) {
fakultaet = fakultaet * i;
System.out.println(""+fakultaet);
}
labelState.setText("daten werden geladen");
Preferences pref = Preferences.getInstance();
fakultaet = 1;
for (int i=1; i<=10000; i++) {
fakultaet = fakultaet * i;
System.out.println(""+fakultaet);
}
labelState.setText("daten geladen");
progressBar.setVisible(false);
}
});
return true;
}