我正在尝试按照 How to make my app icon bounce in the Mac dock 中的建议制作我的 mac 托盘图标
这对于纯 java 应用程序和 swing 来说效果很好
但这不适用于 e4 swt 应用程序,如何使其在此类应用程序中反弹
引用: 以下链接中示例代码的 pfa https://bugs.eclipse.org/bugs/show_bug.cgi?id=321949
最佳答案
Application.requestUserAttention
在 e4 应用程序中为我工作(Mac 10.9.3 上的 Eclipse 4.3.2,带有 Java 1.8 更新 5)。
注意:只有当应用程序不是焦点应用程序时,它才会执行某些操作。使用 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:");
关于java - 如何使我的 e4 swt 应用程序图标在 Mac Dock 中弹起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24263920/