java - 如何使我的 e4 swt 应用程序图标在 Mac Dock 中弹起

标签 java macos swt e4

我正在尝试按照 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/

相关文章:

c++ - 类方法 VS 类静态函数 VS 简单函数 - 性能方面?

java - JFace PopupDialog 中小部件的背景颜色

Java线程: wait,notifyAll和synchronized关键字没有按预期工作

objective-c - 如何将 NSImage 绘制到 NSView 上?

java - 如何修复石头剪刀布的java代码?

objective-c - 模拟鼠标点击 Cocoa 中的菜单项?

Java SWT : Get subset of Pixels from Image to create a new Image

java - 在 SWT 小部件表中动态填充大量数据

java - 用于自定义 View 的 Android onTouchEvent

java - 请解释此正则表达式的输出(以正面前瞻开头)