我有一个在 Windows(很棒)和 Ubuntu 12.04(面临几个界面问题)上运行的应用程序。首先,我有以下代码来实现 TrayIcon:
if (SystemTray.isSupported()) {
// Get the SystemTray instance
SystemTray tray = SystemTray.getSystemTray();
// Load icon
java.awt.Image image = null;
try {
image = ImageIO.read(getClass().getResource("icon.png"));
} catch (IOException exc) {
exc.printStackTrace();
}
/**
* A few listeners to popup menu items click.
*/
// Create a popup menu and its items
PopupMenu popup = new PopupMenu();
MenuItem openItem = new MenuItem("Open");
openItem.addActionListener(openListener);
popup.add(openItem);
popup.addSeparator();
MenuItem closeItem = new MenuItem("Close");
closeItem.addActionListener(closeListener);
popup.add(closeItem);
trayIcon = new TrayIcon(image, "app test", popup);
try {
tray.add(trayIcon);
} catch (AWTException exc) {
exc.printStaceTrack();
}
}
这个 png 图标有一个透明的背景。正如我所说,在 Windows 上运行良好。但在 Linux 上,它的背景是白色的。此外,当鼠标悬停在其图标上时,会显示一个标签(不是工具提示)“JavaEmbeddedFrame”。
我的 .desktop 文件(在 /usr/share/application 中)设置为:
[Desktop Entry]
Encoding=UTF-8
Name=appTest
GenericName=appTest
Comment=Testing
Exec=/bin/sh "/usr/share/appTest/test.sh"
Icon=/usr/share/appTest/icon.png
Terminal=false
Type=Application
StartupNotify=true
当 ALT+TAB 时,它不是显示“appTest”,而是显示“Java”,带有我的应用程序图标和带有“java.lang.Thread”描述的默认 Java 图标(如另一个窗口)。
关于如何解决它的任何想法?提前致谢!