У меня проблема. На моем (затмение 4) на основе графического интерфейса у меня есть два объекта:Progressbar не обновляется во времени
Button button = new Button(groupInitialize, SWT.NONE);
ProgressBar bar= new ProgressBar(group, SWT.SMOOTH);
Я установил для у слушателя кнопки, так что в любое время, что кнопка нажата в разработке начнется. Во время этой разработки строка состояния должна обновляться.
// 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();
}
});
и это то, что я делаю в myLongLastingMethod():
private void myLongLastingMethod() {
action1();
update();
action2();
update();
action3();
update();
}
И, наконец, метод обновления (который -should- обновить прогресс бар):
Обновлено
private void update() {
if (progressBar.isDisposed()) {
return;
}
int selection = progressBar.getSelection();
progressBar.setSelection(++selection);
}
Я уверен, что я делаю что-то неправильно ... Любой i dea/help почему он не должен работать?
как это: общественное ничтожной handleEvent (окончательное событие Event) {myLongLastingMethod();} ? – Kasper
Нет, вам все равно нужно запустить фоновый поток, добавлен код для ответа. –
ok Я получил его, но все еще не работает, как в методе run, мы не в потоке пользовательского интерфейса (действительно, я получил исключение). – Kasper