2012-05-30 13 views
6

Un frammento di mio codice è qui sotto:Java.awt.SystemTray non visualizza un'icona del vassoio correttamente

SystemTray systray = SystemTray.getSystemTray(); 

try{ 
    TrayIcon trayicon = new TrayIcon(new ImageIO.read(new File("icon.png")),"I am a description"); 
} 
catch(IOException e) { 
    e.printStackTrace(); 
} 

tutto fila liscio, ma l'immagine visualizzata nella barra di sistema è tagliato fuori. Viene visualizzata solo la parte in alto a sinistra, a meno che non si riduca a 16x16 (da 40x40). Il icon.png è un file immagine che viene caricato correttamente (non null). Ho pensato che i file delle icone del vassoio di sistema potevano essere 40px?

Qualcuno potrebbe spiegarmi qual è il problema qui?

risposta

11

Le possibilità includono TrayIcon.setImageAutoSize() e forse il tuo sistema operativo (supponendo Windows) è impostato su un tipo di display ad alta risoluzione come 120 o 144 e Java non si adatta correttamente a tale.

+0

Wow, ho completamente perso quella funzione. Grazie! – user1418454

+1

Sono il tipo a cui piace leggere il codice sorgente, quindi sono andato e ho trovato [implementazione di windows] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147 /sun/awt/windows/WTrayIconPeer.java#WTrayIconPeer) di TrayIcon. Sembra che abbia come target 16x16 se non hai attivato l'autosize. – Jim

Problemi correlati