2012-05-30 1 views
6

Фрагмент моего кода ниже:Java.awt.SystemTray не отображает иконку в трее правильно

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

Все проходит гладко, но изображение отображается в системном лотке отрезан. Отображается только верхняя левая часть, если я не уменьшаюсь до 16x16 (от 40x40). icon.png - это файл изображения, который загружен правильно (но не null). Я думал, что файлы значков в системном трее могут быть 40 пикселей?

Может кто-нибудь, пожалуйста, объясните мне, в чем проблема?

ответ

11

Возможности включают TrayIcon.setImageAutoSize() и, возможно, ваша ОС (при условии, что Windows) установлена ​​на какой-то дисплей с высоким разрешением на дюйм, такой как 120 или 144, и Java не подходит к этому правильно.

+0

Вау, я полностью пропустил эту функцию. Благодаря! – user1418454

+1

Я типа, который любит читать исходный код, поэтому я пошел и нашел [реализацию Windows] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147 /sun/awt/windows/WTrayIconPeer.java#WTrayIconPeer) TrayIcon. Похоже, что он нацелен на 16x16, если вы не включили автозапуск. – Jim