在我的应用程序中,我有一个提取按钮,可以获取一些内容(大约需要1分钟才能完成)。我想在加载数据时禁用此提取按钮。我已经设置了
fetchButton.setEnable(false);
用户点击按钮后。但有时它会禁用按钮,有时按钮仍然启用(我认为它是由于某些线程而发生的)。
这是我过度简化的代码
fetchButton.addSelectionListener(FetchData);
public SelectionAdapter FetchData= new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
fetchButton.setEnable(false);
Runnable job = new Runnable() {
@Override
public void run() {
doSomeHeavyTask();
}
}
BusyIndicator.showWhile(Display.getCurrent(), job);
};
然后修改后的新代码
fetchButton.addSelectionListener(FetchData);
public SelectionAdapter FetchData= new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
fetchButton.setEnable(false);
cursor = new Cursor(Display.getCurrent(), SWT.CURSOR_WAIT);
Display.getCurrent().getActiveShell().setCursor(cursor);
Thread Job = new Thread() {
public void run() {
doTask();
}
};
Job.run();
cursor = new Cursor(Display.getCurrent(), SWT.CURSOR_ARROW);
Display.getCurrent().getActiveShell().setCursor(cursor);