[英]Change the active application on OS X with Java and SWT
这是我的具体情况:
我的应用程序在后台运行,我想从我的应用程序工具栏图标的右键菜单中打开一个新窗口。 为简单起见,我使用MessageDialog
,并在对话框上使用open()
方法,该窗口应显示并使其成为活动窗口。
由于某种原因,我遇到了以下问题:如果我打开了其他应用程序,然后尝试打开此新对话框,它将打开,但在活动应用程序后面。 新对话框将在相同应用程序的其他窗口之前打开,但不会在其他(活动)应用程序的前面打开。
有没有一种简单的方法可以做到这一点,而我却缺少了?
我找到了解决方案。 本质上,您需要找到活动的工作台外壳(应用程序外壳)并在该外壳上使用以下方法,然后将实际所需的窗口推到最前面。
您可以通过在重绘之前添加方法shell.setMaximized(true)
来轻松修改此选项,以使窗口看起来也最大化。
private static void bringupDialog(WindowState state) {
final Shell workbenchShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
//bring up the application to front
workbenchShell.setVisible( true );
workbenchShell.setMinimized( false );
workbenchShell.redraw();
//focus on dialog
workbenchShell.setActive();
workbenchShell.forceActive();
workbenchShell.setFocus();
workbenchShell.forceFocus();
workbenchShell.moveAbove( null );
workbenchShell.redraw();
Shell shell = instance.getShell(); // desired window shell
shell.setActive();
shell.forceActive();
shell.setFocus();
shell.forceFocus();
shell.moveAbove( null );
shell.redraw();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.