检测用户何时完成SWT shell的大小调整

jsn*_*jsn 3 java swt

我有一个可调整大小的SWT shell.每次调整大小时,我都必须做一些计算密集的事情.

我可以ControlListener在我的shell上注册一个,但是这会在整个调整大小操作中连续生成事件,我不知道调整大小拖动类型鼠标操作何时结束.

我希望能够检测用户何时完成 shell的大小调整,然后启动我的计算密集型操作.任何想法如何去做?

sta*_*ker 6

使用计时器并在上次收到调整大小事件后延迟一秒钟后开始操作?草稿:

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)