Display.getActiveShell()
シェルがフォーカスされている場合にのみ、シェルをアクティブと見なすようです。現時点で別のアプリケーションがフォーカスを持っている場合、それは return を意味しDisplay.getActiveShell()
ますnull
。
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;
}
独自のメソッドを作成する以外に、この問題に取り組む標準的な方法はありますか?