2016-10-05 17 views
0

ich in ein Problem lief mit Java AWT-Tray-Icons unter Ubuntu Gnome 16.04:Tray Icon funktioniert nicht auf Ubuntu 16.04

Das Icon in der linken oberen Ecke meines Bildschirms angezeigt wird und in der Taskleiste erscheint ein schwarzes Quadrat . Der MouseListener funktioniert auch nicht (weder auf dem Symbol noch auf dem schwarzen Quadrat).

Icon in the top left corner

System Tray

Hier ist mein Code:

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

Dieser Code auf Windows 10.

Vielen Dank im Voraus gut funktioniert!

Antwort

3

Java System Tray Unterstützung existiert nicht für neuere Linux Distributionen, hauptsächlich wegen der Änderungen von GtkStatusIcon zu AppIndicator, und GTK2/3 ändert sich ebenfalls (Probleme mit JavaFX, wenn Sie nicht zusätzliche Bibliotheken installieren).

Da Gnome - Gnome den AppIndicator gerne als "Benachrichtigungen" "versteckt", gibt es zusätzlich eine Erweiterung (Top-Icons), mit der Sie die Indikatoren wieder an den Anfang des Bildschirms stellen können in einer versteckten Schublade unten links auf dem Bildschirm)

Wenn Sie plattformübergreifende Taskleistensymbole anzeigen möchten, empfehle ich das Projekt SystemTray. Es gibt bald eine Inbound 3.0-Version (ein API-Rewrite und bessere native Unterstützung), aber die ältere 2.x-Version sollte das Problem lösen, das Sie haben.