我正按照How to make my app icon bounce in the Mac dock
中的建议制作我的mac托盘图标这适用于纯Java应用程序和swings
但这不适用于e4 swt应用程序,如何让它在这种类型的应用程序中反弹
REF: 以下链接中示例代码的pfa https://bugs.eclipse.org/bugs/show_bug.cgi?id=321949
答案 0 :(得分:1)
Application.requestUserAttention
在e4应用程序中适用于我(使用Java 1.8更新5的Mac 10.9.3上的Eclipse 4.3.2)。
注意:如果应用程序不是专注的应用程序,它只会执行某些操作。使用false
参数只有一次退回,指定true
以使其反弹,直到应用具有焦点。
更新
您也可以使用SWT Mac特定类来执行此操作,如下所示:
private static final long sel_requestUserAttention_ = OS.sel_registerName("requestUserAttention:");
private static final int NSCriticalRequest = 0;
private static final int NSInformationalRequest = 10;
...
NSApplication app = NSApplication.sharedApplication();
OS.objc_msgSend(app.id, sel_requestUserAttention_, NSInformationalRequest);
使用NSInformationalRequest
进行单次反弹,NSCriticalRequest
反弹,直到应用获得焦点。
由于这是仅限Mac的SWT代码,因此您必须将其放在MANIFEST.MF
中带有平台过滤器的插件或片段中,例如:
Eclipse-PlatformFilter: (& (osgi.ws=cocoa) (osgi.os=macosx) (osgi.arch=x86_64) )
更新
以上代码适用于Mac OSX上的64位SWT,用于32位SWT使用
private static final int sel_requestUserAttention_ = OS.sel_registerName("requestUserAttention:");