托盘图标在Ubuntu 16.04上不起作用

Phi*_*ker 0 java ubuntu gnome

我在Ubuntu Gnome 16.04下遇到Java awt托盘图标问题:

图标显示在屏幕的左上角,并且在系统任务栏中显示一个黑色正方形。MouseListener也不起作用(在图标或黑色正方形上均不起作用)。

左上角的图标

系统托盘

这是我的代码:

if (SystemTray.isSupported()) {
   Image image = ImageIO.read(EyeUNIFYlocal.class.getResource("/star.png"));
   TrayIcon trayIcon = new TrayIcon(image);
   trayIcon.setImageAutoSize(true);

   trayIcon.addMouseListener(new MouseAdapter() {
      @Override
      public void mouseClicked(MouseEvent e) {
         System.out.println("Clicked");
      }
   });
   try {
      SystemTray.getSystemTray().add(trayIcon);
   } catch (AWTException ex) {
      System.err.println("Error while creating tray icon.");
   }
} else {
   System.err.println("Tray icons are not supported on this System.");
}
Run Code Online (Sandbox Code Playgroud)

此代码在Windows 10上可以正常运行。

先感谢您!

Nat*_*han 6

Java System Tray对较新的Linux发行版不存在支持,主要是由于从GtkStatusIcon到AppIndicator的更改以及GTK2 / 3的更改(因此,JavaFX的问题,除非您安装一些其他库)。

此外,由于您提到了Gnome,Gnome喜欢将“ AppIndicator”隐藏为“ notifications”,因此有一个扩展名(顶部图标),可让您将指示器恢复到屏幕顶部(而不是隐藏在屏幕顶部)。屏幕左下方的抽屉)

如果要显示跨平台系统任务栏图标,建议您使用SystemTray项目。即将有一个入站3.0版本(API重写和更好的本机支持),但是较旧的2.x版本应该可以解决您遇到的问题。