2012-05-30 28 views
6

fragment mojego kodu jest poniżej:Java.awt.SystemTray nie wyświetla ikonę w zasobniku prawidłowo

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

Wszystko działa płynnie ale obraz wyświetlany w zasobniku systemowym jest odcięta. Wyświetlana jest tylko górna lewa część, chyba że zmniejszę się do 16x16 (z 40x40). icon.png to plik obrazu, który jest poprawnie załadowany (nie ma wartości null). Myślałem, że pliki ikon w zasobniku systemowym mogą mieć rozmiar 40 pikseli?

Czy ktoś mógłby mi wyjaśnić, o co tu chodzi?

Odpowiedz

11

Możliwości obejmują TrayIcon.setImageAutoSize() i być może Twój system operacyjny (zakładając, że Windows) jest ustawiony na ekran o wysokiej rozdzielczości, na przykład 120 lub 144, a Java nie dostosowuje się do tego poprawnie.

+0

Wow, całkowicie przegapiłem tę funkcję. Dzięki! – user1418454

+1

Jestem typem, który lubi czytać kod źródłowy, więc poszedłem i znalazłem [implementację okien] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147 /sun/awt/windows/WTrayIconPeer.java#WTrayIconPeer) z TrayIcon. Wygląda na to, że celuje w 16x16, jeśli nie włączono autosize. – Jim