SWT一个入门问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 19:11:10
if(!display.readAndDispatch()){display.sleep();}
中这个readAndDispatch方法是什么意思啊,Dispatch英文意思是什么呢?
声明Shell 时,要Shell s=new Shell(display);Shell和Display是什么关系啊。!!~!!

在SWT中要想创建一个窗口,至少要用到两个类:Display和Shell。Display负责处理所有SWT窗口小部件和操作系统之间的交互,比如我们可以通过Display的方法来查询操作系统:哪个控件获取了焦点,当前打开了哪些窗口等等。简单的说,它的功能在于实现了窗口的管理。与Display不同,Shell的实例为我们提供了真正可见的窗口,该窗口一般作为主窗口使用,我们可以在此放置其它窗口部件。需要注意的是,这些窗口是由桌面(MS Windows)或窗口管理程序(Unix或Linux系统)来管理的。Shell的实例可以直接从Display创建,也可以从父代Shell创建。

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

用xlib做个窗口通过printf("b2\n");
wm_hints->flags |= InputHint;
printf("b3\n");
wm_hints->input = False;
printf("b4\n");
XSetWMHints(display, parent, wm_hints);
可以达到失去焦点效果。

Dispatch...可以解释为 调度.派遣

display只是一个对象,

而shell是对于display的操作扩展。