再下面的代码是建立Shell的事件循环: while(!shell.isDisposed( )){ if(!display.readAndDispatch( )) display.sleep( ); }
Shell需要响应一些事件,其中某些是由操作系统引起的,另外一些是由用户引起的,如用户点击了最大化按钮以及关闭Shell创建的窗口等。事件循环一直侦听这些事件,然后将这些事件转发给相应的处理程序,这是由Display类的readAndDispatch()方法来完成的。这意味着,你创建的每个Shell必须具有它自己的事件循环。如果创建的Shell没有事件循环,或者事件循环失效的话,它马上就会被除去。一般情况下,事件循环会一直执行下去,直到Shell类的isDisposed( )方法返回值为true(即窗口已被用户关闭)为止。 |
|