Swt shell/dialog 强制聚焦

Swt shell/dialog force focus

我正在打开一个 Swt 对话框。但是在我的应用程序加载插件并打开对话框之前,如果用户单击其他一些后台应用程序,那么在这种情况下焦点不在我新创建的对话框上。可以注意到这一点,因为我的对话框的 header 是灰色的,如果我从键盘输入任何内容,它会被其他打开的应用程序捕获。我的问题是如何在打开 Swt shell/dialog 后立即将焦点返回到 Swt。

谢谢!

您不能强制小部件焦点,因为它由 OS 管理,但您可以请求它:

调用下面的方法forceActive你可以通过对话框shell

public static void forceActive(final Shell shell) {
    shell.getDisplay().asyncExec(new Runnable() {
        public void run() {
            if (shell != null && !shell.isDisposed()) {
                shell.forceActive();
            }
        }
    });
}