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