Ich habe ein Problem. Auf meiner (Eclipse 4 basiert) GUI habe ich zwei Objekte:Progressbar nicht in der Zeit aktualisiert
Button button = new Button(groupInitialize, SWT.NONE);
ProgressBar bar= new ProgressBar(group, SWT.SMOOTH);
ich eine listner für die Schaltfläche festgelegt, so dass zu jeder Zeit, dass die Taste eine Ausarbeitung gedrückt wird beginnen. Während dieser Ausarbeitung muss die Statusleiste aktualisiert werden.
// Button listener definition!
button .addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(final Event event) {
Runnable run = new Runnable() {
@Override
public void run() {
Display display = PlatformUI.getWorkbench().getDisplay();
display.asyncExec(new Runnable() {
public void run() {
myLongLastingMethod();
}
});
}
};
new Thread(run).start();
}
});
und das ist, was ich in der myLongLastingMethod tun():
private void myLongLastingMethod() {
action1();
update();
action2();
update();
action3();
update();
}
Und schließlich die Update-Methode (die die Fortschrittsbalken aktualisieren -should-):
AKTUALISIERT
private void update() {
if (progressBar.isDisposed()) {
return;
}
int selection = progressBar.getSelection();
progressBar.setSelection(++selection);
}
Ich bin mir sicher, dass ich etwas falsch mache ... Any ich Dea/Hilfe warum sollte es nicht funktionieren?
wie folgt aus: public void handle (letzte Ereignis event) {myLongLastingMethod();} ? – Kasper
Nein, Sie müssen immer noch einen Hintergrund-Thread ausführen, Code hinzugefügt, um zu beantworten. –
ok Ich habe es aber immer noch nicht funktioniert wie in der run-Methode sind wir nicht im UI-Thread (in der Tat habe ich eine Ausnahme). – Kasper