我在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上可以正常运行。
先感谢您!
Java System Tray对较新的Linux发行版不存在支持,主要是由于从GtkStatusIcon到AppIndicator的更改以及GTK2 / 3的更改(因此,JavaFX的问题,除非您安装一些其他库)。
此外,由于您提到了Gnome,Gnome喜欢将“ AppIndicator”隐藏为“ notifications”,因此有一个扩展名(顶部图标),可让您将指示器恢复到屏幕顶部(而不是隐藏在屏幕顶部)。屏幕左下方的抽屉)
如果要显示跨平台系统任务栏图标,建议您使用SystemTray项目。即将有一个入站3.0版本(API重写和更好的本机支持),但是较旧的2.x版本应该可以解决您遇到的问题。