Системный трей не поддерживается на текущей платформе? - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь создать приложение System Tray в Ubuntu 18.04, используя Java.

Это код, который я выполняю:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class App {
    static{
        System.setProperty("java.awt.headless", "false");
    }
    public static void main(String[] args) {

//       if(!SystemTray.isSupported()){
//           System.out.println("System Tray is not supported.");
//           return;
//       }
       final PopupMenu popup = new PopupMenu();
       Image img = Toolkit.getDefaultToolkit().createImage("/path/img.png");
       final TrayIcon trayIcon = new TrayIcon(img);
       final SystemTray systemTray = SystemTray.getSystemTray();

       //create components of system tray
        trayIcon.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                System.out.println("In here!");
                trayIcon.displayMessage("Test","Some action happened",TrayIcon.MessageType.INFO);
            }
        });

        try{
            systemTray.add(trayIcon);
        }catch(AWTException e){
            System.out.println("TrayIcon could not be added.");
        }

    }


}

Я закомментировал isSupported () Тестовый фрагмент метода, потому что я продолжал получать "Системный трей не поддерживается".

Исключение, которое я получаю:

Исключение в потоке "main" java.lang.UnsupportedOperationException: Системный трей не поддерживается на текущей платформе.в java.awt.SystemTray.getSystemTray (SystemTray.java:186) в App.main (App.java:16)

Любая идея, как бы я сделал это поддерживается?Кроме того, если у кого-нибудь есть устройство MacOS, можете ли вы попробовать его, и дайте мне знать, если оно работает?Спасибо!

1 Ответ

0 голосов
/ 29 мая 2018

Gnome 3.28 (используется в Ubuntu 18.04) удалил системный трей.Существует программное обеспечение под названием TopIcon Plus Gnome Shell Exetension, которое возвращает системный трей.Я проверил код, и эффекты были, как и ожидалось.Значок был помещен в Глобальную панель.

https://extensions.gnome.org/extension/1031/topicons/

...