2016-01-18 24 views
6

Meine Java-Anwendung zeigt das entsprechende Symbol auf der Taskleiste Code, der mehr oder weniger wie folgt aussieht:Blank-Symbol in 10 Windows-Benachrichtigungs

Toolkit mainToolkit = Toolkit.getDefaultToolkit(); 
SystemTray mainTray = SystemTray.getSystemTray(); 
Image trayIconImage = mainToolkit.createImage(getClass().getResource(resourcePath)); 
TrayIcon mainTrayIcon = new TrayIcon(trayIconImage); 
mainTray.add(mainTrayIcon); 

Manchmal, dass ich ändern Symbol wie folgt aus:

Image newImage = mainToolkit.createImage(getClass().getResource(otherPath)); 
mainTrayIcon.setImage(newImage); 

von Zeit meine App zu Zeit braucht eine Benachrichtigung (mit einem baloon Nachricht von seinem Tray-icon kommt) zeigen:

mainTrayIcon.displayMessage(someCaption, msg, TrayIcon.MessageType.NONE); 

All dieser Code ist eigentlich irgendwie vereinfacht, erfasst aber diese Funktionalität ziemlich gut.

Also alles ist gut unter Windows 7. Aber es stellt sich heraus, dass es unter Windows 10 anders angezeigt wird. Auf der Benachrichtigung befindet sich links ein Symbol. Es ist in der Regel meines app aktuelle Tray-Icon, aber manchmal ist es einfach leer:

The erroneous notification

Im oberen roten Kreis (auf der Benachrichtigung) ist, dass leeres Symbol, die manchmal statt meiner App-Symbol angezeigt (in den unteren roter Kreis, auf dem Systemfach). Ich habe keine Ahnung, warum es passiert. Alles was ich weiß ist, dass dies nur geschieht, wenn sich das Taskleistensymbol und die Benachrichtigungsnachricht der App ändern, bevor die erste Benachrichtigung (die das Symbol immer korrekt anzeigt) verschwindet. Wenn die Benachrichtigung angezeigt wird, dann wird/wird manuell geschlossen UND DANN ändern sich das Taskleistensymbol und die Benachrichtigungen der App, die nächste Benachrichtigung (mit der neuen Nachricht, die gerade eingestellt wurde) zeigt das App-Symbol korrekt an.

Antwort

0

kam gerade über dieses Problem und fand die richtige Lösung:

mainTrayIcon.setImageAutoSize(true);

Hier ist eine Methode, eine Benachrichtigung auf Windows senden: sendNotification("Title", "Subtitle", "icons/icon-128.png");

public static void sendNotification(String title, String subtitle, String pathToIcon) { 
    SystemTray mainTray = SystemTray.getSystemTray(); 
    Image trayIconImage = Toolkit.getDefaultToolkit().getImage(pathToIcon); 
    TrayIcon mainTrayIcon = new TrayIcon(trayIconImage); 
    mainTrayIcon.setImageAutoSize(true); 
    try { 
     mainTray.add(mainTrayIcon); 
     mainTrayIcon.displayMessage(title, subtitle, TrayIcon.MessageType.NONE); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Aufruf zeigt

Working notification

+0

Entschuldigung für eine späte Antwort, aber ich konnte lange nicht an dieser App arbeiten. Ich habe es gerade überprüft und es funktioniert nicht. Außerdem bedeutet deine Antwort, dass du jedes Mal ein neues Tray-Icon hinzufügst, und sie multiplizieren jedes Mal, also ist es nicht das, wonach ich gesucht habe. Ich muss nur das Symbol des Tray-Icons wechseln, das war's. – PookyFan