如何在关闭 Shell 时捕获 [x]

问题描述

我有以下 Shell 侦听器代码

private class ShellListener extends ShellAdapter
{
    @Override
    public void shellClosed( ShellEvent e )
    {
    }

    @Override
    public void shellDeactivated( ShellEvent e )
    {
    }
}

我需要能够在 Shell 失去焦点时捕获,即:用户转到另一个应用程序。 shellDeactivated() 就是这样做的。我还需要知道何时明确 close() Shell。 shellClosed() 就是这样做的。

但是,当用户点击 Shell 右上角/右上角的 [x] 图标时,shellDeactivated() 会触发,然后 shellClosed() 会触发。单击 [x] 时,我需要能够忽略 shellDeactivated()

ShellEvent 没有任何相关信息,它只保存 Shell 对象,而不是哪个 Shell 控件发起事件。

有什么办法可以为 [x] 点击设置陷阱?

解决方法

咕噜咕噜

好的,在 shellClosed() 中,我弹出一条消息,询问用户是否真的想退出。似乎这被认为是失去焦点事件(确实如此)。这就是触发 shellDeactivated() 事件的原因。

所以 shellClosed() 触发,我显示一个弹出消息,触发 shellDeactivated() 事件。事情发生的顺序不规则。一个简单的标志并恢复正常:-)