加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

SWT – 如果shell用户已切换到另一个shell,则可靠地知道事件

发布时间:2020-12-15 17:01:40 所属栏目:安全 来源:网络整理
导读:我需要知道,当用户切换到另一个 shell时,通过单击它. 我尝试了shellListener.shellDeactivated(),但是当shell将焦点放在它自己的控件上时,会触发此事件,这意味着单击活动Shell中的Control时. 这不是预期的行为,因为我需要知道,当另一个Shell被激活时,而不是
我需要知道,当用户切换到另一个 shell时,通过单击它.

我尝试了shellListener.shellDeactivated(),但是当shell将焦点放在它自己的控件上时,会触发此事件,这意味着单击活动Shell中的Control时.

这不是预期的行为,因为我需要知道,当另一个Shell被激活时,而不是我的.

有任何想法吗?

我们假设你有三个炮弹.主壳和两个壳可以从主壳打开.

因此,当另一个shell被激活时,应该通知主shell.
您可以添加一个等待特定事件类型的侦听器(在主shell中):

shell.addListener(SWT.Show,new Listener() {

        @Override
        public void handleEvent(Event e) {
            System.out.println("activated: " + e.text);
        }
    });

其他shell应该在激活时触发(通知)此事件.为此,您将shell侦听器添加到其他两个shell,并使用o.notifyListeners();在方法shellActivated()中触发该事件.

shell.addShellListener(new ShellAdapter() {
        @Override
        public void shellActivated(ShellEvent e) {
            Shell shellSrc = (Shell) e.getSource();
            Display display  = shellSrc.getDisplay();

            Event event = new Event();
            event.type = SWT.Show;
            event.text = "other shell 1";

            Shell[] shells = display.getShells();
            for(Shell o : shells) {
                o.notifyListeners(SWT.Show,event);
            }
        }
    });

当您激活其他两个shell之一时,将通过事件类型SWT.Show通知主shell.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读