目前有了swt,我有时候需要一个程序随意来到前台(就像闹钟一样)。你如何强制一个java swt程序“移动到前台”?
通常如下工程(jruby的):
@shell.setMinimized(false)
@shell.forceActive
这带来的外壳到前,如果它是最小化。
随时创建一个新的shell也会将(新的shell)带到最前面。
不过,如果外壳是而不是最小化,上面的代码只是闪烁(闪烁)应用程序在任务栏中的图标。实际上,第一次运行它会将它带到前面。之后,它只是闪烁在任务栏中。那是窗户。在Linux上它似乎只在任务栏中闪烁(ubuntu默认)。
有谁知道跨平台的方式让应用程序来到前面,在SWT?
看来,没有咒语forceActive setActive setMinimized(false)setFocus forceFocus和setVisible可以完成这件事情。
我很确定它是可能的(至少在Windows中),因为E文本编辑器可以做到这一点。那么,这不是swt,但至少有一些其他应用have been known to do it。我想这可能是swt bug 192036?
非常感谢。
相关:
- How to bring a window to the front?
- Opening a Shell
- Keep window in foreground (even if it loses focus)
- Bug 244597 - Cannot activate shell programatically on gtk
- Need to bring application to foreground on Windows
- How to bring a window to the front?这个摆动的例子可能是某种类型的线索,太...
看起来像你链接到**的SWT错误**描述了你的问题,听起来好像他们不能修复它。 – 2010-02-23 02:11:24
我认为这确实是Windows的问题 - 很好的抓住。现在解决的办法是首先将一个shell最小化,然后取消最小化(或者使用一些本地代码[通过ffi或jni]来强制它覆盖它)。在Linux中,我不太确定问题是什么(只是在任务栏中闪烁)。它*可能*在新版本的swt.jar> = 3.5中修复 https://bugs.eclipse.org/bugs/show_bug.cgi?id = 244597 – rogerdpack 2010-02-23 17:52:53