我有一个可调整大小的SWT shell.每次调整大小时,我都必须做一些计算密集的事情.
我可以ControlListener在我的shell上注册一个,但是这会在整个调整大小操作中连续生成事件,我不知道调整大小拖动类型鼠标操作何时结束.
我希望能够检测用户何时完成 shell的大小调整,然后启动我的计算密集型操作.任何想法如何去做?
使用计时器并在上次收到调整大小事件后延迟一秒钟后开始操作?草稿:
long lastEvent;
ActionListener taskPerformer = new ActionListener() {
public void doCalc(ActionEvent evt) {
if ( (lastEvent + 1000) < System.currentTimeMillis() ) {
hardcoreCalculationTask();
} else {
// this can be timed better
new Timer(1000, taskPerformer).start();
}
}
};
}
Run Code Online (Sandbox Code Playgroud)
在你的resize事件中:
lastEvent = System.currentTimeMillis();
new Timer(1000, taskPerformer).start();
Run Code Online (Sandbox Code Playgroud)