创建菜单栏图标,但没有与之关联的可见运行应用程序

时间:2014-05-14 20:58:42

标签: java macos notification-area

我想创建一个与正在运行的应用程序无关的菜单栏图标。就像Dropbox的菜单栏图标不会显示为打开的应用程序,但只能在菜单栏上显示。

到目前为止我所添加的是添加菜单栏图标的代码:

package tray;

import java.awt.AWTException;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.io.IOException;

import javax.imageio.ImageIO;

import logging.Logger;

public class TrayObject {
    private TrayIcon trayIcon;

    public TrayObject() {
        if(SystemTray.isSupported()) {
            try {
                trayIcon = new TrayIcon(
                            ImageIO.read(getClass().getResource("/Add.png")), 
                            "CodeLibrary");
                SystemTray.getSystemTray().add(trayIcon);
            } catch (IOException e) {
                Logger.log(this, "IOException");
            } catch (AWTException e) {
                Logger.log(this, "AWTException");
            }   
        }
    }

    public static void main(String[] args) {
        TrayObject to = new TrayObject();
    }
}

当我运行应用程序时,菜单栏图标显示应该显示。

Image of my system tray

然而,问题是我不想要应用程序' TrayObject'在应用程序之间切换时有一个菜单栏也不可见。我希望菜单栏图标在那里,而不与正在运行的应用程序' TrayObject'相关联。是否可以在Java中执行此操作,如果可以,如何执行此操作?

1 个答案:

答案 0 :(得分:2)

如果您使用appbundler将应用程序包装为.app捆绑包,则可以在LSUIElement中添加Info.plist属性以取消停靠图标和菜单栏。< / p>

<key>LSUIElement</key>
<string>1</string>

(有关示例,请参阅this apple.stackexchange question