我正在尝试使用Java在Ubuntu 18.04上制作系统托盘应用程序。

这是我正在执行的代码:

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()方法测试代码段,因为我一直在获取“不支持系统托盘”。

我得到的异常是:



知道我将如何支持它吗?
另外,如果任何人都有MacOS设备,您可以尝试一下,让我知道它是否有效吗?谢谢!

最佳答案

Gnome 3.28(在Ubuntu 18.04中使用)删除了系统托盘。
有一个名为 TopIcon Plus Gnome Shell Exetension的软件,可以返回系统托盘。
我测试了代码,并且效果符合预期。在全局栏中放置了一个图标。

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

10-02 23:02