我使用 TimerTask 在 SWT Canvas 中显示一系列图像,每5秒重绘一次画布。这一切都很好但是当我在画布区域上移动一些窗口时,它会在它按顺序移动到下一个图像之前开始变得混乱。我可以避免这个吗?
这是画布
cnvs = new Canvas(customContainer,SWT.NO_REDRAW_RESIZE | SWT.DOUBLE_BUFFERED);
我正在以这种方式在绘图侦听器中绘制图像
int index = 0; 如果(curImg> = 0&安培;&安培; curImg< 3) curImg ++; 其他 curImg = 0;
Image img = imgs[curImg]; if(curImg==3){ index=curImg-1; img=imgs[index]; }
e.gc.drawImage(img,
0,
0,
img.getImageData().width,
img.getImageData().height,
0,
0,
cnvs.getSize().x,
cnvs.getSize().y);
TimerTask功能:
public TimerTask startTask() {
return new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
if(!UIManager.getShell().getDisplay().isDisposed()){
UIManager.getShell().getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
if(!cnvs.isDisposed())
cnvs.redraw();
}
});
}
}
};
};
这就是它被调用的方式
计时器=新 计时器(); timer.schedule(MainUI.compositeInstallationProgresslatest.startTask(),1000,5000);
感谢您的帮助!