目前有了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