Display.getActiveShell()
は、フォーカスされている場合、シェルをアクティブと見なしているようです。現時点で別のアプリケーションにフォーカスがある場合、Display.getActiveShell()
はnull
を返します。シェルにフォーカスがない場合でもSWTのアクティブシェルを取得
SWTアプリケーションにフォーカスがないときでも、いつ私がSWTアプリケーションにフォーカスしているかを教えてくれるメソッドが必要です。時々私は得るものの
私はすぐに、一緒にコードのこの部分をハッキングしてきましたAssertionException
:
public static Shell getActiveShell() {
Display display = Display.getDefault();
Shell result = display.getActiveShell();
if (result == null) {
Shell[] shells = display.getShells();
for (Shell shell : shells) {
if (shell.getShells().length == 0) {
if (result != null)
throw new AssertionException();
result = shell;
}
}
}
return result;
}
独自のメソッドを書く以外に、この問題にアプローチする任意の標準的な方法はありますか?
_ _第二部は、第一の矛盾は「私はいつも私のSWTアプリケーションがフォーカスにない場合でも、私のSWTアプリケーションに焦点を当て上のシェルである私に教えてくれます。メソッドが必要」。明確にすることはできますか? – Baz
1つは、アプリケーションのコンテキストに焦点を当てたシェルを置くことです。もう1つは、私のswtアプリケーションに焦点を当てることです! –
アプリケーション自体にフォーカスがない場合、アプリケーション内にフォーカスはありません。 – Baz