Java和Linux:TrayIcon和Task Switcher问题

时间:2013-05-21 14:58:21

标签: java linux swing trayicon png-transparency

我有一个在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图标(如另一个窗口)。

有关如何修复它的任何想法? 提前谢谢!

0 个答案:

没有答案