繁体   English   中英

使用Java和SWT更改OS X上的活动应用程序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM