问题描述
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()
事件。事情发生的顺序不规则。一个简单的标志并恢复正常:-)