Mar*_*nik 2 java swt eclipse-rcp
显然所有的Eclipse/SWT都有管理忙碌鼠标的方法
BusyIndicator.showWhile(Runnable synchronousStuffToDo)
Run Code Online (Sandbox Code Playgroud)
但是,我有一个基本上面向事件的项目,其中"要做的事情"不会在连续的执行行中发生:操作被排序并且持续回调被提供给执行管理器.因此,我没有任何意义可以投入到synchronousStuffToDo可运行的中.
是否存在另一种低级且笨拙,但与平台无关的异步操作繁忙指示器的方式,这意味着两个单独的方法调用,"激活它"和"停用它"?
我应该补充ProgressMonitorDialog这个问题,因为它似乎遇到了同样的问题.是的,在ProgressMonitorDialog#run方法中,内部事件循环将被旋转,但SWT事件循环只是我的执行管理器之一,因此链仍然会被破坏.显然没有这个课程我甚至不能显示进度监视器,除非我从较低级别的原语重新实现.
您无法操纵Cursor使用BusyIndicator该类.您可以调用以下util方法在后台运行作业时显示忙碌图标Thread
public static void imBusy(final boolean busy){
Display.getDefault().asyncExec(new Runnable()
{
@Override
public void run()
{
Shell shell = Display.getDefault().getActiveShell();
if(busy){ //show Busy Cursor
Cursor cursor = Display.getDefault().getSystemCursor(SWT.CURSOR_WAIT);
shell.setCursor(cursor);
}else{
shell.setCursor(null);
}
}
});
}
Run Code Online (Sandbox Code Playgroud)