SWT一个入门问题
发布网友
发布时间:2022-04-01 17:25
我来回答
共3个回答
热心网友
时间:2022-04-01 18:54
在SWT中要想创建一个窗口,至少要用到两个类:Display和Shell。Display负责处理所有SWT窗口小部件和操作系统之间的交互,比如我们可以通过Display的方法来查询操作系统:哪个控件获取了焦点,当前打开了哪些窗口等等。简单的说,它的功能在于实现了窗口的管理。与Display不同,Shell的实例为我们提供了真正可见的窗口,该窗口一般作为主窗口使用,我们可以在此放置其它窗口部件。需要注意的是,这些窗口是由桌面(MS Windows)或窗口管理程序(Unix或Linux系统)来管理的。Shell的实例可以直接从Display创建,也可以从父代Shell创建。
Shell需要响应一些事件,其中某些是由操作系统引起的,另外一些是由用户引起的,如用户点击了最大化按钮以及关闭Shell创建的窗口等。事件循环一直侦听这些事件,然后将这些事件转发给相应的处理程序,这是由Display类的readAndDispatch()方法来完成的。这意味着,你创建的每个Shell必须具有它自己的事件循环。如果创建的Shell没有事件循环,或者事件循环失效的话,它马上就会被除去。一般情况下,事件循环会一直执行下去,直到Shell类的isDisposed( )方法返回值为true(即窗口已被用户关闭)为止。
热心网友
时间:2022-04-01 20:12
用xlib做个窗口通过printf("b2\n");
wm_hints->flags |= InputHint;
printf("b3\n");
wm_hints->input = False;
printf("b4\n");
XSetWMHints(display, parent, wm_hints);
可以达到失去焦点效果。
热心网友
时间:2022-04-01 21:47
Dispatch...可以解释为 调度.派遣
display只是一个对象,
而shell是对于display的操作扩展。