Создание значка строки меню без связанного с ним видимого работающего приложения

Я хочу создать значок строки меню, который не связан с запущенным приложением. Так же, как значок строки меню 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, и если да, то как?


person Robin    schedule 14.05.2014    source источник


Ответы (1)


Если вы упаковываете приложение в пакет .app с помощью appbundler, вы можете добавить свойство LSUIElement в Info.plist к подавить значок дока и строку меню.

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

(см., например, этот вопрос apple.stackexchange)

person Ian Roberts    schedule 14.05.2014