1

我想创建一个与正在运行的应用程序无关的菜单栏图标。就像 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();
    }
}

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

我的系统托盘的图像

但是,问题是我不希望应用程序“TrayObject”在应用程序之间切换时具有菜单栏也不可见。我希望菜单栏图标存在而不与正在运行的应用程序“TrayObject”相关联。是否有可能在 Java 中做到这一点,如果可以,怎么做?

4

1 回答 1

2

如果您.app使用appbundle将应用程序打包为一个包,那么您可以添加该LSUIElement属性Info.plist以抑制停靠图标和菜单栏。

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

(有关示例,请参阅此 apple.stackexchange 问题)

于 2014-05-14T21:22:22.267 回答