托盘图标无法在Ubuntu 16.04上运行

时间:2016-10-05 08:35:33

标签: java ubuntu gnome

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

图标显示在屏幕的左上角,系统托盘中显示黑色方块。 MouseListener也不起作用(既不在图标上也不在黑色方块上)。

Icon in the top left corner

System Tray

这是我的代码:

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.");
}

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

提前谢谢!

1 个答案:

答案 0 :(得分:5)

较新的Linux发行版不存在Java System Tray支持,主要是因为从GtkStatusIcon到AppIndicator的更改以及GTK2 / 3的更改(因此,除非您安装了一些额外的库,否则会出现JavaFX问题)。

此外,既然你提到Gnome - Gnome喜欢将AppIndicator“隐藏”为“通知”,那么有一个扩展(top-icons)可以让你将指标恢复到屏幕顶部(而不是在屏幕左下方隐藏的抽屉里)

如果要显示跨平台系统托盘图标,我建议SystemTray项目。很快就会有一个入站3.0版本(API重写和更好的本机支持),但是旧的2.x版本应该可以解决您遇到的问题。