2016-01-18 13 views
6

La mia applicazione java mostra la sua icona sulla barra delle applicazioni utilizzando il codice che sembra più o meno così:icona bianco in 10 di notifica di Windows

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

A volte cambio che un'icona come questa:

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

di tanto in tanto la mia applicazione ha bisogno di mostrare un po 'di notifica (tramite un messaggio baloon proveniente dalla sua icona tray):

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

Tutto questo codice è in qualche modo semplificato ma afferra abbastanza bene questa funzionalità.

Quindi tutto va bene su Windows 7. Ma si scopre che su Windows 10 viene mostrato in modo diverso. Sulla notifica c'è un'icona mostrata a sinistra. Di solito è icona del vassoio corrente della mia app, ma a volte è solo vuota:

The erroneous notification

nel cerchio rosso superiore (sulla notifica) è che un'icona vuota che a volte sembra invece che l'icona di mia app (in basso a cerchio rosso, sul vassoio del sistema). Non ho idea del perché si verifica. Tutto quello che so è che ciò accade solo quando l'icona della barra delle applicazioni e il messaggio di notifica cambiano prima della prima notifica (che mostra sempre la sua icona correttamente) scompare. Se viene visualizzata la notifica, quindi si chiude/si chiude manualmente E POI l'icona della barra delle applicazioni e le notifiche cambiano, la prossima notifica (con il nuovo messaggio appena impostato) mostrerà l'icona dell'app correttamente.

risposta

0

Proprio imbattuto in questo problema e trovato la soluzione giusta:

mainTrayIcon.setImageAutoSize(true);

Ecco un metodo per inviare una notifica di Windows:

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(); 
    } 
} 

Calling sendNotification("Title", "Subtitle", "icons/icon-128.png"); mostra

Working notification

+0

Ci scusiamo per la risposta in ritardo, ma non sono riuscito a lavorare su questa app per molto tempo. L'ho appena controllato e non funziona. Inoltre la tua risposta implica l'aggiunta di una nuova icona del vassoio ogni volta, e continuano a moltiplicarsi ogni volta, quindi non è quello che cercavo comunque. Ho solo bisogno di cambiare l'immagine dell'icona del vassoio, il gioco è fatto. – PookyFan