我在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.");
}
此代码在Windows 10上正常运行。
提前谢谢!
答案 0 :(得分:5)
较新的Linux发行版不存在Java System Tray支持,主要是因为从GtkStatusIcon到AppIndicator的更改以及GTK2 / 3的更改(因此,除非您安装了一些额外的库,否则会出现JavaFX问题)。
此外,既然你提到Gnome - Gnome喜欢将AppIndicator“隐藏”为“通知”,那么有一个扩展(top-icons)可以让你将指标恢复到屏幕顶部(而不是在屏幕左下方隐藏的抽屉里)
如果要显示跨平台系统托盘图标,我建议SystemTray项目。很快就会有一个入站3.0版本(API重写和更好的本机支持),但是旧的2.x版本应该可以解决您遇到的问题。