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

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

1 ответ

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

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

(см. этот вопрос apple.stackexchange для примера)

Другие вопросы по тегам